在Linux中使用PSR-4自动加载时找不到类,在Windows中工作



简介

你好,我将文件从本地PC移动,运行WAMP到我的Web服务器,这是一台Linux机器。
我使用 Composer 使用其自动加载功能来加载我的MVC结构,以后更多。

我在网页上收到的错误如下:
Fatal error: Uncaught Error: Class 'AppModelDB' not found in <folder_structure>/config/_boot.php:15

我在我的Windows机器上没有此错误,代码在那里可以完美地工作。

文件夹结构

i使用相同的文件夹结构,该文件夹结构(简化(如下:

- config
-- _boot.php
- dist
-- index.php
-- includes
--- header.php
- src
-- app
--- Models
---- db.php
- composer.json

代码零件

我的config/_boot.php文件看起来像这样:

use AppModelDB;
...
$db = new DB($database['host'], $database['dbname'], $database['user'], $database['password']);

我的src/app/Model/db.php文件看起来像这样:

namespace AppModel;
class DB
{
}

我的composer.json包含以下内容:

"autoload": {
        "psr-4": {
            "App\": "src/app/"
        },
        "files": [
            "src/app/functions.inc.php",
            "config/_boot.php",
            "src/app/Routing.php"
        ]
    }

autoload_psr4.php

return array(
    ...
    'App\' => array($baseDir . '/src/app'),
    ...
);

问题

有没有人知道我做错了什么?

我尝试/检查的东西

  • 检查文件夹权限
  • 我尝试将"App\Model\": "src/app/Model/"添加到我的composer.json以及

ps:这是我在Stackoverflow上的第一个问题,欢迎改进布局的提示...

psr-4状态:

终止类名称对应于以.php结尾的文件名。 文件名必须与终止类名称的情况匹配。

您已通过将DB类放入db.php文件中打破了此规则。它在Windows上工作而不是在Linux上工作的原因是,以后对文件和文件夹名称敏感。

因此,解决方案是将db.php重命名为DB.php

相关内容

  • 没有找到相关文章

最新更新