获取php system()函数的完整输出


Getting full output from php system() function

我有一个php system()函数输出的问题。下面是代码:

system("c:''Dev-Cpp''bin''g++.exe c:''wamp''www''hello.cpp -O3 -o c:''wamp''www''hello.exe", $output);
echo $output;

如果我的hello。cpp编译成功,我得到0,如果没有,我得到1

如果我从CMD运行相同的东西,而不是只给出1,它会给我完整的错误。

我怎么能得到完整的错误与php系统()函数?

您只捕获程序的返回代码,该代码通常是一个整数,其中0表示"成功",其他任何代码都是错误代码。

如果您想捕获程序的实际输出(即STDOUT和/或STDERR),您需要执行以下操作之一:

  • 使用输出缓冲来捕获system()的输出:
<>之前命令美元= " c: ' ' Dev-Cpp ' ' bin ' ' g++ . exe c: ' ' wamp ' ' www ' ' hello.cpp o3 - o c: ' ' wamp ' ' www ' ' hello . exe";ob_start ();系统(命令,returnCode美元);$output = ob_get_clean();之前
  • 使用exec(), shell_exec()或反引号:
<>之前exec($command, $output, $returnCode);//…或…$output = shell_exec($command);//…或…$output = ' $command ';之前

如果您想捕获STDERR的输出(我怀疑您是这样做的),您可能需要在命令字符串的末尾添加2>&1

或者,您可能想要查看proc_open(),它更复杂,但可以为子进程提供更细粒度的控制,以及它如何执行/将数据传递给您。