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

Getting full output from php system() function

本文关键字:输出 函数 php system 获取      更新时间:2023-10-16

我有一个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(),它更复杂,但可以为子进程提供更细粒度的控制,以及它如何执行/将数据传递给您。