如何从php编译GCC
我在php中尝试了以下功能:如何从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
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
。但是,这两个变量是分开的,通常PHPPATH
是未设置的,而bashPATH
是未设置的
为了解决这个问题,您必须在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