為 webserver 使用者設置 $PATH
我嘗試
$PATH
使用不同的方法(如編輯/etc/profile
、/etc/environment
等)為所有使用者添加,包括網路伺服器使用者(即 www-data)。在所有情況下,它都適用於終端,但不適用於 PHP 中的 shell 命令。例如
echo $PATH
在終端顯示可用路徑,包括我添加的路徑;但是,shell_exec('echo $PATH')
在 PHP 中顯示了沒有我添加的路徑的原始路徑:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
如何將 $PATH 全域設置為可供網路伺服器使用者使用?我在 Ubuntu/Debian 上使用 nginx。
我嘗試編輯
/etc/init.d/nginx
,我認為這是 nginx 的起點,但沒有效果。
你沒有說哪個發行版,但我猜是 Ubuntu 或類似的。
中定義的預設 PATH
/etc/init.d/apache2
是/usr/local/bin:/usr/bin:/bin
在我的 Ubuntu 系統上有一個文件
/etc/apache2/envvars
. 您可以PATH
在此文件中定義 ,當您重新啟動 Apache 時,這將是使用的路徑。PATH=$PATH:/your/addtional/path
對於 nginx,您可以將所需的路徑作為
fastcgi_param
location ~ \.php$ { include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/tmp/php.socket; fastcgi_param PATH /usr/local/bin:/usr/bin:/bin:/your/path; }
您需要指定所需的整個 PATH
進一步更新。
我將 php 設置為 fcgi 所以(感謝@MichaelHampton 的一些聊天討論),我發現看到的路徑
system(...);
是你的 php init 腳本中設置的路徑(在我的例子中是 /etc/init.d/php-fcgi) .經過大量探勘後,我發現這導致了解決方案
env[PATH]=/your/custom/path
在或@Ali 在開始腳本
php5-fpm.conf
中指出。php5-fpm