您好,登錄后才能下訂單哦!
小編給大家分享一下執行Composer任何命令無反應怎么辦,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
環境
CentOS 7
Nginx 1.12.0
PHP 7.1.6
問題
原本使用都正常,因需要創建個新項目,我就使用 Composer 進行創建,但是沒有任何顯示,相繼的執行了創建其它項目也沒有任何反應。添加 -vvv 選項后,結果也是沒有任何變化,隨后嘗試執行 composer -h、composer self update 等等命令,也無任何的提示信息。
再次執行了個 Composer 相關命令后,隨即執行了 echo $?,得到了 255 的結果。
嘗試新安裝 Composer 時,出現了 open_basedir 的相關錯誤提示,頓時就知道問題所在了,在這次創建新項目前,我配置了 php.ini 的 open_basedir 選項,值為項目目錄和 /tmp/,Composer 的工作目錄為項目目錄。
隨即注釋了 open_basedir 并重啟 PHP 后,Composer 的使用果然沒有問題了。但是我還是想設置 open_basedir ,下面就是解答。
使用 Nginx
無論是外部的請求服務端解析還是終端 PHP 命令都會走 php.ini 文件,但是 Composer 的執行是系統本地的。也就是說,如果要是從 Nginx 上進行設置,本地執行 Composer 是不會受影響的。
Nginx 增加配置
fastcgi_param PHP_ADMIN_VALUE "open_basedir=項目目錄/:/tmp/";
重啟 Nginx、PHP 后,終端中嘗試執行 Composer 無異常了。Nginx 配置中對 open_basedir 的配置需要注意兩點。
如果你的程序是框架,那么不建議寫 $document_root/,因為那是 root 值,而這個值是框架的入口的目錄,運行起來一定會出錯的。你要是懂了,你還可以寫 $document_root/,但是別忘了增加整個網站的所在目錄
目錄結尾記得加上 「/」,例如寫「/tmp/」而不是「/tmp」,要是寫「/tmp」那么「/tmp1」也是允許的范圍內
我就是要用 php.ini
事情很明顯,Composer 命令的執行所需要的目錄不僅僅是在項目目錄(也是我執行 Composer 命令的工作目錄)和 tmp 目錄,查找了相關資料也沒有結果,最后整理了一下思路,對 php.ini 的 open_basedir 原本值中增加了 Composer 的命令所在目錄和 Composer 的文件目錄后,重啟 PHP,Composer 正常了。
看完了這篇文章,相信你對“執行Composer任何命令無反應怎么辦”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。