2009-07-10 140 views
4

我想要運行我的服務器上的exe文件和輸出返回到瀏覽器屏幕。 exe文件需要一個輸入文件,然後返回在屏幕上的數據。PHP exec和沒有了shell_exec工作

爲什麼不工作的代碼?

$output = shell_exec('myprogram < INP.DAT'); 
echo "<pre>" . var_export($output, TRUE) ."</pre>\\n"; 

它在瀏覽器屏幕上顯示「NULL」。我也嘗試過exec()。它返回「Array()」。

回答

7

One of the commentsshell_exec手冊上說:

謹防以下不一致的:shell_exec(),如果命令的輸出爲空反引號運算符將不會返回一個字符串 - 他們將返回NULL代替。

這將制定嚴格的比較,''回報false


可能disabled if PHP is in safe mode

shell_exec()(反引號的功能等同物)
當PHP在安全模式下運行時,此功能被禁用。

exec()
您只能執行safe_mode_exec_dir內的可執行文件。基於某些原因,目前不能有..組件的可執行文件路徑。 escapeshellcmd()是在此函數的參數來執行。

您可以使用phpinfo()函數檢查您的服務器的PHP設置。

+0

所以如果EXEC(「LS」)的作品,可它仍然是安全模式? – chris 2009-07-10 04:16:28

+0

它不在安全模式 – chris 2009-07-10 04:17:35

2

這應該工作:

 
$output = array(); 
exec('myprogram < INP.DAT', $output); 
var_dump($output); 
2

是myprogram可以從默認的shell?它在一個特定的目錄中嗎?
嘗試用/full/path/to/myprogram < INP.DAT

0

有時,這些功能都沒有禁用PHP在安全模式更換myprogram < INP.DAT,你必須讓他們在php.ini