我的一位用户遇到的奇怪行为似乎并不符合PHP exec()
规范。
我这样调用:
exec($cmd, $out, $ret);
我希望这不会产生任何输出,但是用户在出错时会看到来自$cmd
的错误堆栈跟踪。我的代码中没有任何内容输出任何内容,因此它必须来自exec()
,但是如何?我是否误解了文档?
我希望我可以在输出缓冲区中捕获它然后处理它,但我宁愿防止它......无论我做什么,我想先了解为什么会发生这种情况。
注意:我正在努力从用户那里获得有关PHP版本和其他详细信息的更多细节,但目前还没有这些信息。我只能说它是> = 5.2.4。
答案 0 :(得分:2)
您遇到的是正常的unix行为:
执行的命令总是有两个输出管道:标准输出和错误输出。文档说明所有输出都被返回。那不包含写入错误输出的东西。这是使用单独的管道py目的来分离错误和正常输出。如果您想要捕获它也必须更改您执行的命令,通常通过附加2>&1
将错误输出映射到标准输出。