为 weberver 用户设置 $PATH

Goo*_*bot 6 linux ubuntu nginx environment-variables php-fpm

我试图添加$PATH为所有用户,包括网络服务器的用户(即,WWW的数据)用不同的方法,例如编辑/etc/profile/etc/environment等。在所有的情况下,它工作在终端,但不与内壳PHP命令。

例如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的起点,但没有效果。

use*_*517 7

你没有说哪个发行版,但我猜是 Ubuntu 或类似的。

中定义的默认 PATH/etc/init.d/apache2/usr/local/bin:/usr/bin:/bin

在我的 Ubuntu 系统上有一个文件/etc/apache2/envvars. 您可以PATH在此文件中定义 ,并在重新启动 Apache 时定义将使用的路径。

PATH=$PATH:/your/addtional/path
Run Code Online (Sandbox Code Playgroud)

对于 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;
}
Run Code Online (Sandbox Code Playgroud)

您需要指定所需的整个 PATH


进一步更新。

我已将 php 设置为 fcgi(感谢@MichaelHampton 进行了一些聊天讨论),我发现看到的路径system(...);是您的 php init 脚本中设置的路径(在我的情况下为 /etc/init.d/php-fcgi) .


经过大量挖掘后,我发现这导致了解决方案

env[PATH]=/your/custom/path
Run Code Online (Sandbox Code Playgroud)

php5-fpm.conf或正如@Ali 在php5-fpm启动脚本中指出的那样。