通过PHP exec调用的GCC不起作用

通过PHP exec调用的GCC不起作用,php,windows,gcc,Php,Windows,Gcc,我在Windows10上运行XAMPP,在我的PHP代码中,我有以下几行代码 exec('C:\cygwin64\bin\gcc', $res, $ret); var_dump($res); var_dump($ret); 但是,我得到了以下输出: array(0) { } int(1) 我尝试用“C:\cygwin64\bin\gcc.exe”和“gcc”替换“C:\cygwin64\bin\gcc.exe”,但它们似乎都不起作用。我还试着用正斜杠代替反斜杠。当我在cmd中键入'gcc'时

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

exec('C:\cygwin64\bin\gcc', $res, $ret);
var_dump($res);
var_dump($ret);
但是,我得到了以下输出:

array(0) {
}
int(1)
我尝试用“C:\cygwin64\bin\gcc.exe”和“gcc”替换“C:\cygwin64\bin\gcc.exe”,但它们似乎都不起作用。我还试着用正斜杠代替反斜杠。当我在cmd中键入'gcc'时,我会看到如下所示的预期输出。当我试图通过PHP用gcc编译C程序(使用绝对路径)时,没有生成任何输出(没有编译)

其他系统调用,如“dir”,工作正常,当使用system()而不是exec()时,同样的问题仍然存在。我也知道这个问题是在年的stackoverflow上解决的,但公认的解决方案在我的案例中不起作用


为什么会发生这种情况?我如何收集进一步的信息进行调试?

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

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

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

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