2016-03-08 46 views
0

今天發生了一件奇怪的事情:一個同事改變了config/app.php中的一些東西,這樣一個不同的類被用作服務提供者而不是原來的類。作曲者更新不起作用,因爲在config/app.php中缺少類嗎?

此新類的代碼位於已添加到composer.json的包中。

我從SVN更新,並得到了兩個新的文件,但後來composer update沒有工作,因爲這在某種程度上使用config/app.php,這被打破,因爲它不知道的類,它當然就只能是在vendorcomposer update之後!

所以我的問題是:爲什麼composer update需要任何東西在config/app.php?以及如何預防未來這樣的事情?

+0

你試圖通過'composer update'安裝一個新包的地方?如果是這樣,那麼你應該運行'composer install'。 – Bogdan

+0

是的,但這次失敗了,因爲缺課! – Dylan

+0

'作曲家安裝'或'作曲家更新'失敗?由於'pre-update-cmd'腳本的運行會影響更新過程,所以我可以看到'composer update'失敗,但既然你說你正在安裝一個新軟件包,那麼你應該使用'install'。 – Bogdan

回答

0

轉到您的config/app.php文件並註釋掉您的同事添加的提供者。運行composer update,然後取消註釋,也許php artisan optimize,然後你應該很好去。

編輯:當一個新的軟件包被其他人添加時,您需要安裝它。當您想要將所有軟件包更新到最新版本或框架時,只需運行composer update

+0

是的,我認爲我自己也是,但不是作曲家應該能夠獨立於你的應用程序運行嗎?幸運的是,原來的類沒有被刪除,但註釋掉了,所以我可以找到解決方案,但我認爲這是一個設計錯誤,無法使用作曲家更新,當config/app.php中的內容發生變化時 – Dylan

+0

作曲家安裝應該已經工作芽。 Laravel爲作曲家更新提供了特殊的配置,通過工匠運行一些額外的腳本,這就是爲什麼當您嘗試更新時出現錯誤的原因。 – samrap

+1

@Dylan根本不是設計錯誤。更新是假設更新現有的軟件包,並且因爲你在你的'config/app.php'中引用了一個尚未安裝的類,所以你會得到錯誤,因爲[在更新過程之前它會運行'php artisan clear-編譯'](http://bit.ly/1SxQkJt),'artisan' **是Laravel的一部分,並且會因爲那些破壞的引用而拋出錯誤。如果您使用'install'來安裝不應該發生的新軟件包,因爲[在安裝後運行該清除編譯命令](http://bit.ly/1QBzKWP)當引用的類存在時。 – Bogdan