首頁 > 開發工具 > composer > 執行 Composer 任何指令無反應的解決(open_basedir 問題)

執行 Composer 任何指令無反應的解決(open_basedir 問題)

藏色散人
發布: 2019-09-29 14:28:18
轉載
4307 人瀏覽過

下面由composer教學專欄跟大家介紹當執行 Composer 任何指令無反應時(open_basedir 問題)的解決方法,希望對需要的朋友有幫助!

執行 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/";
登入後複製

重啟 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 任何指令無反應的解決(open_basedir 問題)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:juejin.im
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板