终端和PHP中的路径不同

终端和PHP中的路径不同,php,linux,apache,Php,Linux,Apache,我在终端中有命令sudo-u www-data-echo$PATH的下一个结果: /home/denis/node-v0.12.0/bin:/home/denis/node-v0.12.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games 如果我运行命令echo`echo\$PATH`,我将在PHP中得到下一个结果: /usr/local/sbin:/usr/

我在终端中有命令sudo-u www-data-echo$PATH的下一个结果:

/home/denis/node-v0.12.0/bin:/home/denis/node-v0.12.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
如果我运行命令echo`echo\$PATH`,我将在PHP中得到下一个结果:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

终端和PHP中的路径不同。我不明白为什么。

按照给定的字面意思运行命令

sudo -u www-data echo $PATH
在执行
sudo
之前,shell会展开
$PATH
(并显示
$PATH
)。但是,如果您正确地引用了这一点,它可能会延迟到sudo'd用户中,并暴露出不同的问题

除非您对此做了特殊规定(选择
sudo
,这可能/可能不起作用),否则在使用
sudo
时,诸如
PATH
之类的环境变量将重置为系统默认值。有关进一步讨论,请参阅


检查哪个用户实际运行该php脚本。哪个用户运行的脚本与此无关。守护进程不是从登录shell启动的。Sudo将继承您当前的环境,除非配置为更改它。我已根据以下主题更改了PHP中的路径: