我有一个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()
的输出:
- 使用
exec()
,shell_exec()
或反引号:
如果您想捕获STDERR的输出(我怀疑您是这样做的),您可能需要在命令字符串的末尾添加2>&1
。
或者,您可能想要查看proc_open()
,它更复杂,但可以为子进程提供更细粒度的控制,以及它如何执行/将数据传递给您。