我尝试为$PATH
包括网络服务器用户(即 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 以供网络服务器用户使用?我在 Ubuntu/Debian 上使用 nginx。
我试图编辑/etc/init.d/nginx
,我认为这是 nginx 的起点,但没有效果。
你没有说是哪个发行版,但我猜是 Ubuntu 或类似的。
定义的默认路径
/etc/init.d/apache2
是/usr/local/bin:/usr/bin:/bin
在我的 Ubuntu 系统上有一个文件
/etc/apache2/envvars
. 您可以PATH
在此文件中定义,当您重新启动 Apache 时,它将成为所使用的路径。对于 nginx,您可以将所需的路径作为
fastcgi_param
你需要指定你想要的整个路径
进一步更新。
我将 php 设置为 fcgi(感谢@MichaelHampton 的一些聊天讨论),我发现看到的路径
system(...);
是你的 php init 脚本中设置的路径(在我的例子中是 /etc/init.d/php-fcgi) .经过大量挖掘后,我发现这导致了解决方案
在或@Ali 在启动脚本
php5-fpm.conf
中指出。php5-fpm