如何从php编译GCC

如何从php编译GCC,php,c++,gcc,Php,C++,Gcc,我在php中尝试了以下功能: exec("gcc testC.c -o runner.out 2>&1",$output,$status); 但是当我打印$output时,我得到了以下错误:(: 如果我跑 exec("/usr/bin/gcc testing/pruebaC.c -o testing/frommm.out 2>&1",$output,$status); 我明白了 collect2: fatal error: cannot find 'ld'\n

我在php中尝试了以下功能:

exec("gcc testC.c -o runner.out 2>&1",$output,$status);
但是当我打印$output时,我得到了以下错误:(:

如果我跑

exec("/usr/bin/gcc testing/pruebaC.c -o testing/frommm.out 2>&1",$output,$status);
我明白了

collect2: fatal error: cannot find 'ld'\n
我的用户:

groups vagrant
vagrant : vagrant root adm cdrom sudo dip www-data plugdev lpadmin sambashare
我的gcc目录

/usr/bin$ ls -l gcc
lrwxrwxrwx 1 root vagrant 7 Apr  7  2014 gcc -> gcc-4.8

如果我从terminal all work运行,我可以编译和执行,但从PHP我不能:(

我不确定评论中发生了什么,但我已经找出了问题的根源,我回答这个问题只是为了向未来的读者澄清

@zneak是对的。如果您尝试并
echo$\u ENV[“PATH”]
并且没有收到任何响应,这意味着PHP正在执行
gcc
和任何其他可执行文件,而没有在
PATH
变量中查找它们。因此,它有时找不到它们中的任何一个。@Marco解释为在bash中回显
PATH
变量,而是执行
echo$PATH
。但是,这两个变量是分开的,通常PHP
PATH
是未设置的,而bash
PATH
是未设置的

为了解决这个问题,您必须在PHP的环境变量中为PHP定义
PATH
。如果您不确定要放什么,请参考bash中定义的
PATH
变量。例如,我当前的Laravel项目有一行

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


在它的
.env
文件的底部,现在只执行
gcc
(不提供完整路径
/usr/bin/gcc
)即可正常工作。

确保PHP的
$path
环境变量设置正确。我如何检查它??
echo$\u env[“path”]
echo$PATH/home/vagrant/.composer/vendor/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/usr/games:/usr/local/games
/usr/bin$ ls -l gcc
lrwxrwxrwx 1 root vagrant 7 Apr  7  2014 gcc -> gcc-4.8