Jer*_* S. 5 php laravel laravel-4
我有一个已经使用了几个星期的应用程序;我将Vagrant + Homestead用于本地开发,并将Forge + Linode用于暂存环境。直到几天前,我的工作流程还可以正常工作,但是现在当部署脚本在Forge中运行时(尤其是composer install),它会出现错误:
[RuntimeException]
Error Output: PHP Fatal error: Class 'Reputationhub\ReputationhubServiceProvider' not found in /home/vagrant/Sites/reputationhu
b/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php on line 157
PHP Stack trace:
PHP 1. {main}() /home/vagrant/Sites/reputationhub/artisan:0
PHP 2. require_once() /home/vagrant/Sites/reputationhub/artisan:30
PHP 3. require() /home/vagrant/Sites/reputationhub/bootstrap/start.php:60
PHP 4. Illuminate\Foundation\ProviderRepository->load() /home/vagrant/Sites/reputationhub/vendor/laravel/framework/src/Illumin
ate/Foundation/start.php:210
PHP 5. Illuminate\Foundation\ProviderRepository->compileManifest() /home/vagrant/Sites/reputationhub/vendor/laravel/framework/
src/Illuminate/Foundation/ProviderRepository.php:57
PHP 6. Illuminate\Foundation\ProviderRepository->createProvider() /home/vagrant/Sites/reputationhub/vendor/laravel/framework/s
rc/Illuminate/Foundation/ProviderRepository.php:121
Run Code Online (Sandbox Code Playgroud)
实际上,php artisan clear-compiled此失败是后来Composer运行的子命令。如果我自己运行它,同样的问题。运行composer install --no-script正常。当我查看时vendor/composer/autoload_classmap.php,它会丢失所有的东西,并且只有几行长(通常更大),因此Laravel所做的任何事情都不能正确地找到正确的类。
奇怪的是,跑步composer dump-autoload -o似乎可以解决问题;该autoload_classmap.php文件耳目一新,并且应用程序运行正常,直到php artisan ...尝试做任何事情,那么它打破了应用程序。
最终结果是Forge部署被破坏了。我可以手动跳到服务器上并运行composer dump-autoload -o以对其进行修复,但这似乎是错误的。
我认为我在研究解决方案方面相当周到,但是到目前为止我什么都找不到,因此任何帮助将不胜感激。
更新:进一步澄清
这是Laravel 4.2。
我的composer.json自动加载部分如下所示:
...
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
],
"psr-4": {
"Reputationhub\\": "app/"
},
"files": []
},
...
Run Code Online (Sandbox Code Playgroud)
提供者已被添加到“提供者”数组中,app.php如下所示:
...
'Reputationhub\ReputationhubServiceProvider',
...
Run Code Online (Sandbox Code Playgroud)
我的提供程序文件(位于app/Reputationhub/ReputationhubServiceProvider.php)如下所示:
<?php namespace Reputationhub;
use Reputationhub\EventSubscribers\MetricsEventSubscriber;
use Illuminate\Support\ServiceProvider;
class ReputationhubServiceProvider extends ServiceProvider {
...
}
Run Code Online (Sandbox Code Playgroud)
更新2:更多测试
不知道它做什么,但composer install似乎做坏了事情,破坏了应用程序。要解决此问题,而不是composer install在部署脚本中使用(随后将调用php artisan clear-compiled和php artisan optimize,这两个脚本都会引发错误),如果使用此脚本,它将自行修复:
...
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
],
"psr-4": {
"Reputationhub\\": "app/"
},
"files": []
},
...
Run Code Online (Sandbox Code Playgroud)