據我瞭解,PHP的passthru顯示控制檯的純粹輸出 - 包括所有輸出,如STDERR。我試圖從一個PHP文件的javac文件像這樣:如何在PHP中使用passthru顯示javac錯誤消息?
<?php
error_reporting(E_ALL);
if(file_put_contents("code.java", "aaaaaa"))
{
passthru("javac -verbose code.java");
echo("Done.");
}
else
{
echo("UNEXPECTED PHP ERROR");
}
?>
正如你可能已經猜到,「AAAAAAA」不應該編譯 - 這我期望從javac的呼叫(而不是輸出提 - 詳細)。然而,當我訪問網頁時,我注意到兩兩件事:
code.java成功創建並充滿我指定的數據。
該網頁的唯一輸出是「完成」。
請注意,如果我從cmd提示符調用完全相同的命令,我會得到一整個輸出。這裏發生了什麼?
tl; dr;爲什麼我沒有從passthru()獲得任何輸出?
編輯:如果我改變中繼命令字符串「回聲PLEASEWORK」它正確
顯示輸出,出於某種原因,我不能發表評論 - Quamis,什麼是執行這個CMD的首選方法並捕獲所有輸出?
輸出到'STDERR'去Apache的錯誤日誌。您需要將其重定向到'STDOUT'以在瀏覽器中查看它。 –