PHP exec()没有在输出中返回错误消息

Gor*_*ran 41 php xml svn exec

我试图以XML格式获取svn命令的某些输出.输入有效参数时输出正常.但是,当我输入错误的密码时,输出不会显示错误消息.这是PHP代码:

exec('/usr/bin/svn --username something --password something --non-interactive log -r HEAD --xml --verbose http://a51.unfuddle.com/svn/a51_activecollab/', $output);
Run Code Online (Sandbox Code Playgroud)

这是我在终端输出的输出:

<?xml version="1.0"?>
<log>
svn: OPTIONS of 'http://a51.unfuddle.com/svn/a51_activecollab': authorization failed: Could not authenticate to server: rejected Basic challenge (http://a51.unfuddle.com)
Run Code Online (Sandbox Code Playgroud)

这是我从var_dump的$ output变量得到的输出:

array(2) {
[0]=>
string(21) "<?xml version="1.0"?>"
[1]=>
string(5) "<log>"
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,$ output变量不会返回第三行输出,其中终端也是如此.请帮助我获得与终端相同的输出(我甚至尝试使用shell_exec()或system()方法,但它们返回与exec()相同的输出)如何获得完整输出?先感谢您!

rac*_*ack 78

你也需要抓住它stderr.

重定向stderrstdout应该做的伎俩.附加2>&1到命令的末尾.

例如

exec("/usr/bin/svn --username something --password something --non-interactive log -r HEAD --xml --verbose http://a51.unfuddle.com/svn/a51_activecollab/ 2>&1", $output);
Run Code Online (Sandbox Code Playgroud)

  • 除此之外:PHP的exec不提供单独捕获`stderr`输出的简单方法,这不奇怪吗? (10认同)