如何从php编译GCC


How compile GCC from php

我从php中尝试了这个函数:

exec("gcc testC.c -o runner.out 2>&1",$output,$status);

但是当我打印$output时,我得到了这个错误:(:

gcc: error trying to exec 'cc1': execvp: No such file or directory'n

如果我运行

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

如果我从终端运行所有工作,我可以编译和执行,但从PHP我不能:(

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

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

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

一行

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

.env文件的底部,现在只执行gcc(没有给出/usr/bin/gcc的完整路径)工作正常。