2015-12-24 71 views
3

我在Debian 8.2上運行lighttpd 1.4.35。我有PHP代碼(PHP5),它要求一個bash腳本,並打印輸出一個非常簡單的HTML文件:HTML未顯示字符

<html> 
<body> 
<?php 
    $res = shell_exec("/var/www/html/run.sh"); 
    echo $res . " is the result"; 
?> 
</body> 
</html> 

如果HTML文件名爲火狐,輸出

is the result 

如果我直接運行PHP與該文件(php index.php),輸出爲

<html> 
<body> 
13.00 
is the result</body> 
</html> 

那麼,哪裏的結果迷路?


編輯: 從Firefox的網頁源代碼是

<html> 
<body> 

is the result</body> 
</html> 

編輯:解決。 bash腳本使用'〜',當腳本從web服務器運行時,該擴展到錯誤的目錄。

+0

嘗試與'$ RES =了shell_exec( 「SH /var/www/html/run.sh」)運行;' –

+0

看看這裏:http://stackoverflow.com/a/20109859/1973205 – Grork

+1

exec函數「only」返回stdout的內容。將stderr重定向到stdout時,是否收到錯誤消息? '$ res = shell_exec(「/ var/www/html/run.sh 2> &1");' – VolkerK

回答

1

exec函數「只有」迴歸標準輸出的內容,這就是爲什麼你可能會錯過一個錯誤消息。
但是,您可以將redirect stderr轉換爲標準輸出,例如,通過

$res = shell_exec("/var/www/html/run.sh 2>&1"); 
0

shell_exec如果在安全模式是不運行,這可能是問題