GCC通过PHP exec调用不起作用


GCC through PHP exec call does not work

我在windows 10上运行XAMPP,在我的PHP代码中,我有以下几行代码。

exec('C:'cygwin64'bin'gcc', $res, $ret);
var_dump($res);
var_dump($ret);

然而,我得到了以下输出:

array(0) {
}
int(1)

我试过用"C:''cygwin64''bin''gcc.exe"answers"gcc"替换"C:''cygwin64''bin ''gcc",但它们似乎都不起作用。我还试着用正斜杠替换反斜杠。当我在cmd中键入"gcc"时,我会看到如下所示的预期输出。当我尝试通过PHP使用gcc编译C程序(使用绝对路径)时,没有产生任何输出(没有进行编译)。

gcc: fatal error: no input files
compilation terminated.

其他系统调用,如"dir",工作正常,当使用system()而不是exec()时,同样的问题仍然存在。我也知道这个问题是在使用PHP编译C++文件的stackoverflow中解决的,但公认的解决方案在我的情况下不起作用。

为什么会发生这种情况,以及如何收集更多信息进行调试?

gcc回显到stderr,所以应该将输出重定向到stdout,如下所示:

exec('C:'cygwin64'bin'gcc 2>&1', $res, $ret);