PHP Composer 找不到自动加载的文件
PHP Composer Can't find autoloaded file
我正在尝试自动加载文件,我的 PSR-4 自动加载在本地运行良好,但是现在我正在部署到裸机服务器。它不工作并且 PHP 指出它找不到自动加载的文件。这是当前错误:
Fatal error: Class 'Metabase\Models\Cron' not found in /usr/www/users/metabase/src/commands/ArticleFetchCron.php on line 25
我的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 文件是否有误?
Composer 实现的基于 PSR-4 的 class 自动加载器,当被要求查找 Metabase\Models\Cron
时,查找名为 src\Models\Cron.php
的文件。如果您的实际文件在路径上的任何地方使用不同的大小写,例如 src\models\Cron.php
您将得到不同的结果,具体取决于底层文件系统是否区分大小写。原因很简单:
如果文件系统区分大小写,它实际上可能包含两个名为 src\models
和 src\Models
的目录,而您加载的是错误的目录。
如果不是,则两条路径实际上对所有效果都是相同的。
仔细检查文件名并用 composer dump-autoload
重建自动加载器。
我正在尝试自动加载文件,我的 PSR-4 自动加载在本地运行良好,但是现在我正在部署到裸机服务器。它不工作并且 PHP 指出它找不到自动加载的文件。这是当前错误:
Fatal error: Class 'Metabase\Models\Cron' not found in /usr/www/users/metabase/src/commands/ArticleFetchCron.php on line 25
我的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 文件是否有误?
Composer 实现的基于 PSR-4 的 class 自动加载器,当被要求查找 Metabase\Models\Cron
时,查找名为 src\Models\Cron.php
的文件。如果您的实际文件在路径上的任何地方使用不同的大小写,例如 src\models\Cron.php
您将得到不同的结果,具体取决于底层文件系统是否区分大小写。原因很简单:
如果文件系统区分大小写,它实际上可能包含两个名为
src\models
和src\Models
的目录,而您加载的是错误的目录。如果不是,则两条路径实际上对所有效果都是相同的。
仔细检查文件名并用 composer dump-autoload
重建自动加载器。