我的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 system()函数获取完整错误?
答案 0 :(得分:2)
您只捕获程序的返回代码,该代码通常是一个整数,其中0
表示“成功”,其他任何内容都是错误代码。
如果你想捕捉程序的实际输出(即STDOUT and/or STDERR)你需要做以下事情之一:
system()
:$command = "c:\\Dev-Cpp\\bin\\g++.exe c:\\wamp\\www\\hello.cpp -O3 -o c:\\wamp\\www\\hello.exe"; ob_start(); system($command, $returnCode); $output = ob_get_clean();
exec($command, $output, $returnCode); // ...or... $output = shell_exec($command); // ...or... $output = `$command`;
如果你想捕获STDERR的输出(我怀疑你这样做),你可能需要在命令字符串的末尾添加2>&1
。
或者,您可能需要查看proc_open()
,这更复杂,但可以让您对子进程及其执行/传递数据的方式进行更精细的控制。