簡體   English   中英

PHP exec()在輸出中未返回錯誤消息

[英]PHP exec() not returning error message in output

我正在嘗試以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);

這是我在終端中得到的輸出:

<?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)

這是我從$ output變量中使用var_dump獲得的輸出:

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

如您所見,$ output變量不返回輸出的第三行,而terminal則返回。 請幫助我獲得與終端輸入相同的輸出(我什至嘗試使用shell_exec()或system()方法,但它們返回的輸出與exec()相同)如何獲得完整的輸出? 先感謝您!

您還需要捕獲stderr

stderr重定向到stdout應該可以解決問題。 在命令末尾附加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);

那可能不是解決方案,只是一個壞建議:您是否嘗試在命令中添加額外的回顯:

exec('/usr/bin/svn --username something --password something --non-interactive log -r HEAD --xml --verbose http://a51.unfuddle.com/svn/a51_activecollab/;**echo ""**', $output);

解決該問題的另一種方法已經提到:如果$ output中沒有最后一行,則無論如何它都在exec()函數的返回值中。 那你有

$totalOutput = push($msg,$output);

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

您需要定義一個用於存儲消息的變量

$msg = exec('/usr/bin/svn --username something --password something --non-interactive log -r HEAD --xml --verbose http://a51.unfuddle.com/svn/a51 _activecollab/');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM