gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 00:54:50 25 4
gpt4 key购买 nike

简介

您好,我将文件从运行 WAMP 的本地电脑移动到我的网络服务器,这是一台 Linux 机器。
我与 composer 合作,使用其自动加载功能来加载我的 MVC 结构,稍后会详细介绍。

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

我的 Windows 机器上没有这个错误,代码在那里工作得很好。

文件夹结构

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

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

代码部分

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

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

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

namespace App\Model;
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状态:

The terminating class name corresponds to a file name ending in .php. The file name MUST match the case of the terminating class name.

通过将 DB 类放入 db.php 文件,您违反了这条规则。它适用于 Windows 而不适用于 Linux 的原因是后者在文件和文件夹名称方面区分大小写。

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

关于php - 在 Linux 中使用 PSR-4 自动加载时找不到类,在 Windows 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49588877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com