我有一个Laravel项目在本地工作(Mavericks),但psr-4下的类没有加载到我们的舞台服务器(CentOS)上.每次尝试编辑器更新或运行工匠命令时,我都会收到Reflection"class not found"错误.
我的所有特定于应用程序的类都存储在app/heatherland下的Laravel项目中,例如:
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,而作曲家是最新的.我的本地设置和舞台服务器上的版本相同.Laravel 4.1.30.
两个系统中都没有重复的composer.phar
任何新的建议欢迎.在这一点上,如果我做了一些愚蠢的事,我会很高兴的.