如何在PHP中正确设置路径

如何在PHP中正确设置路径,php,environment-variables,fpm,Php,Environment Variables,Fpm,我试图在PHP中设置PATH环境变量,但遇到了一些意外行为: var_dump(getenv('PATH')); system('echo $PATH'); system('which true 2>&1'); system('PATH="$PATH" which true 2>&1'); 导致 string(23) "/usr/local/bin:/usr/bin" /usr/local/bin:/usr/bin which: no true in ((null)

我试图在PHP中设置
PATH
环境变量,但遇到了一些意外行为:

var_dump(getenv('PATH'));
system('echo $PATH');
system('which true 2>&1');
system('PATH="$PATH" which true 2>&1');
导致

string(23) "/usr/local/bin:/usr/bin"
/usr/local/bin:/usr/bin
which: no true in ((null))
/usr/bin/true
选择的可执行文件也反映了这一点,这些文件来自
/usr/bin
,而不是
/usr/local/bin

我的目标(显然)是更改脚本期间调用的某些可执行文件的路径。但我既不能直接更改要更改其路径的可执行文件的路径,因为它是由某个二进制文件间接调用的。如果不修补外部库,我也不能简单地使用
PATH=“$PATH”
变量

因为明显的解决方法不适用,而且我觉得这很奇怪,所以我想解释一下为什么会发生这种情况,以及如何(或如果)以传递给
system
exec
调用的方式设置路径


脚本是通过php fpm运行的,如果这里有兴趣的话。

您的示例似乎不一致或不可复制。如果$PATH设置正确,如第2行所示,则第3行应正常工作。你确定结果的第3行和第4行没有切换吗?是的,我确定,这就是为什么我对这个问题如此困惑的原因。