nginx上的PHP exec函数不';无法识别系统环境变量

nginx上的PHP exec函数不';无法识别系统环境变量,php,gcc,nginx,environment-variables,exec,Php,Gcc,Nginx,Environment Variables,Exec,我尝试在PHP中使用exec函数编译带有gcc的源文件,代码如下 <?php exec("gcc -o hello hello.c 2>&1", $output, $return_value); echo $output[0]; 在Arch Linux上使用nginx 1.10和PHP5.6时,我遇到了同样的问题(完全相同…)。 同样的PHP代码在Apache/Debian上工作。 在尝试Arch/Nginx服务器时,出现了cc1错误。。。我将gcc替换为/usr/bin/

我尝试在PHP中使用exec函数编译带有gcc的源文件,代码如下

<?php
exec("gcc -o hello hello.c 2>&1", $output, $return_value);
echo $output[0];

在Arch Linux上使用nginx 1.10和PHP5.6时,我遇到了同样的问题(完全相同…)。
同样的PHP代码在Apache/Debian上工作。
在尝试Arch/Nginx服务器时,出现了cc1错误。。。我将gcc替换为/usr/bin/gcc。。。。我现在被困在“collect2:致命错误:找不到'ld'”

同样的编译也适用于shell。。。ld在/usr/bin中。在PHP中使用“exec”时,它就是不起作用

不满意(但有效)的解决方案 通过运行gcc-v…(只需在编译行中添加-v),我可以看到:

...
COLLECT_GCC_OPTIONS='-v' '-D' 'exit=noexit' '-D' '_exit=noexit' ...
 /usr/lib/gcc/x86_64-pc-linux-gnu/6.1.1/collect2 -plugin ... (<= very long line)
collect2: fatal error: cannot find 'ld'
。。。
COLLECT\u GCC\u OPTIONS='-v'-D''出口=noexit'-D''出口=noexit'。。。

/usr/lib/gcc/x86_64-pc-linux-gnu/6.1.1/collect2-插件。。。(为PHP设置
PATH
变量,因为它可能依赖于自己的环境变量而忽略系统的
PATH
变量

例如,我的
.env
文件底部有以下行:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

这样,执行
gcc
(不提供完整路径
/usr/bin/gcc
)就可以正常工作

我想我也会把答案贴在这里,因为这个问题比另一个问题受到了更多的关注

...
COLLECT_GCC_OPTIONS='-v' '-D' 'exit=noexit' '-D' '_exit=noexit' ...
 /usr/lib/gcc/x86_64-pc-linux-gnu/6.1.1/collect2 -plugin ... (<= very long line)
collect2: fatal error: cannot find 'ld'
cd /usr/lib/gcc/x86_64-pc-linux-gnu/6.1.1/  # <- path to collect2 (see above)
ln -s /usr/bin/ld ld