为 weberver 用户设置 $PATH

为 weberver 用户设置 $PATH

我尝试使用$PATH不同的方法(例如编辑、等)为所有用户(包括 Web 服务器用户(即 www-data))/etc/profile添加/etc/environment。在所有情况下,它都在终端中工作,但不适用于 PHP 中的 shell 命令。

例如echo $PATH在终端中显示可用路径,包括我添加的路径;但是shell_exec('echo $PATH')在 PHP 中显示原始路径,但没有我添加的路径: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

如何全局设置 $PATH 以供 Web 服务器用户使用?我在 Ubuntu/Debian 上使用 nginx。

我尝试编辑/etc/init.d/nginx,我认为这是 nginx 的起点,但没有效果。

答案1

你没有说是哪个发行版,但我猜是 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;
}

您需要指定所需的整个路径


进一步更新。

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


经过一番挖掘,我发现从而得到解决方案

env[PATH]=/your/custom/path

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

相关内容