我正在尝试自动加载一个文件,我的PSR-4自动加载在本地运行良好,但是现在我正在部署到一个裸机服务器。它不工作,并且PHP声明它找不到自动加载的文件。这是当前的错误:
致命错误:在第25行的/usr/www/users/metabase/src/commands/ArticleFetchCron.php中找不到类'Metabase\Models\Cron‘
我的composer.json如下:
{
"require": {
"vlucas/phpdotenv": "^2.4",
"guzzlehttp/guzzle": "6.3",
"monolog/monolog": "^1.23",
"illuminate/http": "^5.7@dev"
},
"autoload": {
"psr-4": {"Metabase\\": "src/"}
}
}
据我所知,出现问题的文件是否正确包含了名称空间:
<?php
namespace Metabase\Commands;
// autoload composer
require_once(__DIR__ . '/../../vendor/autoload.php');
/**
* Class ArticleFetchCron
* @package Metabase\Commands
*/
use Metabase\Api\Requests\ArticleRequest;
use Metabase\Models\Cron;
use Metabase\Models\CronInterface;
use Metabase\Models\DatabaseAdapter;
class ArticleFetchCron extends Cron
implements CronInterface
我想知道是不是我的composer.json文件弄错了?
发布于 2018-06-18 01:13:45
Composer实现的基于PSR-4的类自动加载器在被要求查找Metabase\Models\Cron
时,会查找一个名为src\Models\Cron.php
的文件。如果您的实际文件在路径中的任何位置使用不同的大小写,比如src\models\Cron.php
,您将得到不同的结果,这取决于底层文件系统是否区分大小写。原因很简单:
src\models
和src\Models
的两个目录,而您加载的目录是错误的。仔细检查文件名并使用composer dump-autoload
重建自动加载器。
此外,如果您正在进行跨平台开发,我建议您到处使用Unix风格的路径分隔符。它们更容易打字;-)
"autoload": {
"psr-4": {"Metabase/": "src/"}
}
https://stackoverflow.com/questions/50898633
复制相似问题