我有一个在本地运行良好的 Laravel 项目(Mavericks),但是 psr-4 下的类没有加载到我们的舞台服务器(CentOS)上。每次我尝试作曲家更新或运行工匠命令时,都会收到反射“找不到类”错误。
我所有特定于应用程序的类都存储在我的 Laravel 项目中 app/heatherland 下,例如:
app/heatherland/import/ImportJob.php (file contains HeatherLand\Import\ImportJob)
我的 composer.json 包含这个条目:
"autoload": {
"classmap": [
"app/commands",
...
"app/database/seeds",
],
"psr-4": {
"HeatherLand\\": "app/heatherland"
}
},
在本地,psr-4 类被添加到 vendor/composer/autoload_classmap.php 中的数组中。它们不会添加到舞台服务器上的此文件中。如果我手动剪切和粘贴它们,artisan 命令可以正常工作,但是下次我运行 composer 命令时,自动加载文件会被覆盖。本地和舞台上的 autoload_psr4.php 都有以下条目,对我来说看起来不错:
'HeatherLand\\' => array($baseDir . '/app/heatherland'),
这是我尝试/检查过的东西的列表:
- 类名、文件夹名、文件名大小写一致且正确。
- 我一直在自由地使用 composer dump-autoload,有和没有 -o 选项
- 我可以使用 --no-scripts 选项很好地运行 composer update,但 artisan 仍然无法运行
- 文件夹名称是小写的,
我尝试更改它们以反映命名空间的大小写(编辑:这从未发生过,至少没有成功)。 - 我已经尝试从我的命名空间中删除 CamelCase(例如,将其更改为 Heatherland),并且我的任何文件夹/文件名中都没有任何下划线。
- 我正在运行 PHP 5.4.30,并且 composer 是最新的。我的本地设置和舞台服务器上的版本相同。Laravel 4.1.30。
- 两个系统中都没有重复的 composer.phar
欢迎任何新的建议。在这一点上,如果我做了一些愚蠢的事情,我会很高兴。