下面由composer教學專欄跟大家介紹當執行 Composer 任何指令無反應時(open_basedir 問題)的解決方法,希望對需要的朋友有幫助!
環境
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/";
#我就是要用php.ini
事情很明顯,Composer 命令的執行所需的目錄不只是在專案目錄(也是我執行Composer 指令的工作目錄)和tmp 目錄,查找了相關資料也沒有結果,最後整理了一下思路,對php.ini 的open_basedir 原本值中增加了Composer 的命令所在目錄和Composer 的檔案目錄後,重啟PHP,Composer 正常了。以上是執行 Composer 任何指令無反應的解決(open_basedir 問題)的詳細內容。更多資訊請關注PHP中文網其他相關文章!