我想要運行我的服務器上的exe文件和輸出返回到瀏覽器屏幕。 exe文件需要一個輸入文件,然後返回在屏幕上的數據。PHP exec和沒有了shell_exec工作
爲什麼不工作的代碼?
$output = shell_exec('myprogram < INP.DAT');
echo "<pre>" . var_export($output, TRUE) ."</pre>\\n";
它在瀏覽器屏幕上顯示「NULL」。我也嘗試過exec()。它返回「Array()」。
我想要運行我的服務器上的exe文件和輸出返回到瀏覽器屏幕。 exe文件需要一個輸入文件,然後返回在屏幕上的數據。PHP exec和沒有了shell_exec工作
爲什麼不工作的代碼?
$output = shell_exec('myprogram < INP.DAT');
echo "<pre>" . var_export($output, TRUE) ."</pre>\\n";
它在瀏覽器屏幕上顯示「NULL」。我也嘗試過exec()。它返回「Array()」。
One of the comments的shell_exec
手冊上說:
謹防以下不一致的:
shell_exec()
,如果命令的輸出爲空反引號運算符將不會返回一個字符串 - 他們將返回NULL
代替。這將制定嚴格的比較,
''
回報false
。
可能disabled if PHP is in safe mode。
shell_exec()
(反引號的功能等同物)
當PHP在安全模式下運行時,此功能被禁用。
exec()
您只能執行safe_mode_exec_dir
內的可執行文件。基於某些原因,目前不能有..
組件的可執行文件路徑。escapeshellcmd()
是在此函數的參數來執行。
您可以使用phpinfo()
函數檢查您的服務器的PHP設置。
這應該工作:
$output = array(); exec('myprogram < INP.DAT', $output); var_dump($output);
是myprogram可以從默認的shell?它在一個特定的目錄中嗎?
嘗試用/full/path/to/myprogram < INP.DAT
有時,這些功能都沒有禁用PHP在安全模式更換myprogram < INP.DAT
,你必須讓他們在php.ini
所以如果EXEC(「LS」)的作品,可它仍然是安全模式? – chris 2009-07-10 04:16:28
它不在安全模式 – chris 2009-07-10 04:17:35