Linux

為 webserver 使用者設置 $PATH

  • August 20, 2012

我嘗試$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

引用自:https://serverfault.com/questions/418952