Laravel 解決composer相關(guān)操作提示php相關(guān)異常的問(wèn)題
Laravel 的一大特色就是使用 composer 來(lái)管理依賴包,這使得整個(gè)項(xiàng)目的升級(jí)、擴(kuò)展變得異常容易。一般情況下,只需要我們輸入幾個(gè)命令并按下回車,就能完成插件包的安裝、更新以及卸載工作。
但有時(shí)候你會(huì)碰到一種比較有意思的問(wèn)題。那就是使用 composer 進(jìn)行相關(guān)安裝、更新插件操作的時(shí)候,卻報(bào) PHP 程序異常。比如,github中一個(gè)項(xiàng)目,在你上次更新之后上游代碼又加入新功能,使用了一個(gè)新的依賴包。這時(shí)你使用git pull更新代碼后,依賴包并沒(méi)有安裝,那么再用composer update 來(lái)更新這個(gè)必要的包時(shí),卻會(huì)因?yàn)轫?xiàng)目程序中缺少這個(gè)包而報(bào)錯(cuò)……(說(shuō)得有點(diǎn)兒繞),如此就陷入了一種想要安裝這個(gè)包卻報(bào)異常,而想要解決這異常又正好需要裝這個(gè)包的死循環(huán)里了。
其實(shí)造成這種問(wèn)題的原因就藏在項(xiàng)目根目錄下那個(gè) composer.json 文件里,稍微看一下就會(huì)發(fā)現(xiàn),其中有一個(gè) scripts 屬性(內(nèi)容見(jiàn)下方代碼),其中設(shè)置了項(xiàng)目創(chuàng)建后、根包安裝后、插件包安裝前和安裝后要自動(dòng)完成的操作,它們大多是php artisan命令,而這些命令是由程序中 Console 組件驅(qū)動(dòng)的,當(dāng)程序發(fā)生異常,它們也就無(wú)法運(yùn)行,于是當(dāng) composer 操作調(diào)起這些命令時(shí)就出現(xiàn)異常了。
"scripts": {
"post-root-package-install": [
"php -r \"copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"pre-update-cmd": [
"php artisan clear-compiled"
],
"post-update-cmd": [
"php artisan optimize"
]
},
在了解了原因之后,再來(lái)說(shuō)解決辦法就不難理解了,有兩種辦法:
第一種方法比較笨,就是在其它空項(xiàng)目里安裝這個(gè)包(或者找到以前裝過(guò)的現(xiàn)成的),然后把源碼復(fù)制到vendor目錄后,最后使用 composer dump-autoloat --optimize 更新自動(dòng)加載文件。
第二種則比較容易,因?yàn)樗轻槍?duì)造成這個(gè)問(wèn)題的原因來(lái)對(duì)癥下藥的。
具體操作就是先刪除上面提到的 scripts并保存 composer.json,然后進(jìn)行需要的 comoser 操作,完成后再將刪除的 scripts 部分加回去去。
需要注意的是,因?yàn)檫@次 composer 操作時(shí)沒(méi)有自動(dòng)運(yùn)行 scripts 里那些命令,因而需要自己根據(jù)情況手動(dòng)處理一下,比如 clear-compiled,optimize 等,或者在composer.json改回去之后再進(jìn)行一次同樣的composer操作。
在laravel最新的版本中,composer.json中的pre-update-cmd這條已經(jīng)被刪除了,而這條正是引起本文中所述問(wèn)題的關(guān)鍵原因。各位可根據(jù)自己的情況手動(dòng)刪除它。
以上這篇Laravel 解決composer相關(guān)操作提示php相關(guān)異常的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Laravel框架中composer自動(dòng)加載的實(shí)現(xiàn)分析
- PHP管理依賴(dependency)關(guān)系工具 Composer的自動(dòng)加載(autoload)
- laravel 實(shí)現(xiàn)向公共模板中傳值 (view composer)
- 淺談laravel 5.6 安裝 windows上使用composer的安裝過(guò)程
- 使用composer 安裝 laravel框架的方法圖文詳解
- 一次因composer錯(cuò)誤使用引發(fā)的問(wèn)題與解決
- tp5框架使用composer實(shí)現(xiàn)日志記錄功能示例
- windows環(huán)境下使用Composer安裝ThinkPHP5
- PHP創(chuàng)建自己的Composer包方法
- 分析Composer實(shí)現(xiàn)自動(dòng)加載原理
相關(guān)文章
PHP中實(shí)現(xiàn)中文字串截取無(wú)亂碼的解決方法
這篇文章主要介紹了PHP中實(shí)現(xiàn)中文字串截取無(wú)亂碼的解決方法,直接使用PHP函數(shù)substr截取中文字符可能會(huì)出現(xiàn)亂碼,下面跟隨腳本之家小編一起看看具體解決方法吧2018-05-05
基于ubuntu下nginx+php+mysql安裝配置的具體操作步驟
本篇文章介紹了,基于ubuntu下nginx+php+mysql安裝配置的具體操作步驟。需要的朋友參考下2013-04-04
ThinkPHP5框架實(shí)現(xiàn)簡(jiǎn)單的批量查詢功能示例
這篇文章主要介紹了ThinkPHP5框架實(shí)現(xiàn)簡(jiǎn)單的批量查詢功能,結(jié)合實(shí)例形式分析了thinkPHP5框架使用原生SQL語(yǔ)句查詢、批量查詢、快速查詢、聚合查詢等操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-06-06
yii2 在控制器中驗(yàn)證請(qǐng)求參數(shù)的使用方法
這篇文章主要介紹了yii2 在控制器中驗(yàn)證請(qǐng)求參數(shù)的使用方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06
PHP實(shí)現(xiàn)字母數(shù)字混合驗(yàn)證碼功能
PHP實(shí)現(xiàn)字母數(shù)字混合驗(yàn)證碼,支持自定義驗(yàn)證碼、驗(yàn)證碼圖片、寬度、高度、個(gè)數(shù)、背景圖片,本文給大家分享實(shí)例代碼,感興趣的朋友跟隨小編一起看看吧2019-07-07
使用PHP如何實(shí)現(xiàn)高效安全的ftp服務(wù)器(一)
FTP服務(wù)器(File Transfer Protocol Server)是在互聯(lián)網(wǎng)上提供文件存儲(chǔ)和訪問(wèn)服務(wù)的計(jì)算機(jī),它們依照FTP協(xié)議提供服務(wù),本文給大家介紹使用PHP如何實(shí)現(xiàn)高效安全的ftp服務(wù)器(一),對(duì)php ftp服務(wù)器相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2015-12-12
thinkPHP5分頁(yè)功能實(shí)現(xiàn)方法分析
這篇文章主要介紹了thinkPHP5分頁(yè)功能實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了thinkPHP5實(shí)現(xiàn)分頁(yè)功能的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-10-10

