執(zhí)行 Composer 任何命令無(wú)反應(yīng)的解決(open_basedir 問(wèn)題)

下面由composer教程欄目給大家介紹當(dāng)執(zhí)行 composer 任何命令無(wú)反應(yīng)時(shí)(open_basedir 問(wèn)題)的解決辦法,希望對(duì)需要的朋友有所幫助!

執(zhí)行 Composer 任何命令無(wú)反應(yīng)的解決(open_basedir 問(wèn)題)

環(huán)境

centos 7

nginx 1.12.0

php 7.1.6

問(wèn)題

原本使用都正常,因需要?jiǎng)?chuàng)建個(gè)新項(xiàng)目,我就使用 Composer 進(jìn)行創(chuàng)建,但是沒(méi)有任何顯示,相繼的執(zhí)行了創(chuàng)建其它項(xiàng)目也沒(méi)有任何反應(yīng)。添加 -vvv 選項(xiàng)后,結(jié)果也是沒(méi)有任何變化,隨后嘗試執(zhí)行 composer -h、composer self update 等等命令,也無(wú)任何的提示信息。

再次執(zhí)行了個(gè) Composer 相關(guān)命令后,隨即執(zhí)行了 echo $?,得到了 255 的結(jié)果。

嘗試新安裝 Composer 時(shí),出現(xiàn)了 open_basedir 的相關(guān)錯(cuò)誤提示,頓時(shí)就知道問(wèn)題所在了,在這次創(chuàng)建新項(xiàng)目前,我配置了 php.ini 的 open_basedir 選項(xiàng),值為項(xiàng)目目錄和 /tmp/,Composer 的工作目錄為項(xiàng)目目錄。

隨即注釋了 open_basedir 并重啟 PHP 后,Composer 的使用果然沒(méi)有問(wèn)題了。但是我還是想設(shè)置 open_basedir ,下面就是解答。

使用 Nginx

無(wú)論是外部的請(qǐng)求服務(wù)端解析還是終端 PHP 命令都會(huì)走 php.ini 文件,但是 Composer 的執(zhí)行是系統(tǒng)本地的。也就是說(shuō),如果要是從 Nginx 上進(jìn)行設(shè)置,本地執(zhí)行 Composer 是不會(huì)受影響的。

Nginx 增加配置

fastcgi_param??PHP_ADMIN_VALUE?"open_basedir=項(xiàng)目目錄/:/tmp/";

重啟 Nginx、PHP 后,終端中嘗試執(zhí)行 Composer 無(wú)異常了。Nginx 配置中對(duì) open_basedir 的配置需要注意兩點(diǎn)。

如果你的程序是框架,那么不建議寫(xiě) $document_root/,因?yàn)槟鞘?root 值,而這個(gè)值是框架的入口的目錄,運(yùn)行起來(lái)一定會(huì)出錯(cuò)的。你要是懂了,你還可以寫(xiě) $document_root/,但是別忘了增加整個(gè)網(wǎng)站的所在目錄

目錄結(jié)尾記得加上 「/」,例如寫(xiě)「/tmp/」而不是「/tmp」,要是寫(xiě)「/tmp」那么「/tmp1」也是允許的范圍內(nèi)

我就是要用 php.ini

事情很明顯,Composer 命令的執(zhí)行所需要的目錄不僅僅是在項(xiàng)目目錄(也是我執(zhí)行 Composer 命令的工作目錄)和 tmp 目錄,查找了相關(guān)資料也沒(méi)有結(jié)果,最后整理了一下思路,對(duì) php.ini 的 open_basedir 原本值中增加了 Composer 的命令所在目錄和 Composer 的文件目錄后,重啟 PHP,Composer 正常了。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊12 分享