[英]php exec and shell_exec not working
我想在我的服務器上運行一個exe文件並將輸出返回到瀏覽器屏幕。 exe文件接受輸入文件,然后在屏幕上返回數據。
為什么這段代碼不起作用?
$output = shell_exec('myprogram < INP.DAT');
echo "<pre>" . var_export($output, TRUE) ."</pre>\\n";
它在瀏覽器屏幕上顯示“NULL”。 我也試過exec()。 它返回“Array()”。
shell_exec
手冊頁上的一條評論說:
請注意以下不一致:如果命令的輸出為空,則
shell_exec()
和反引號操作符不會返回字符串 - 它們將返回NULL
。這將嚴格比較
''
返回false
。
如果PHP處於安全模式,它可能會被禁用 。
shell_exec()
(功能相當於反引號)
當PHP以安全模式運行時,此功能被禁用。
exec()
您只能在safe_mode_exec_dir
執行可執行文件。 出於實際原因,目前不允許在可執行文件的路徑中包含..
組件。escapeshellcmd()
在此函數的參數上執行。
您可以使用phpinfo()
函數檢查服務器的PHP設置。
這應該工作:
$output = array(); exec('myprogram < INP.DAT', $output); var_dump($output);
myprogram是否可以從默認shell獲得? 它在特定目錄中嗎?
嘗試更換myprogram < INP.DAT
與/full/path/to/myprogram < INP.DAT
有時這些函數被禁用而php沒有安全模式,你必須在php.ini中啟用它們
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.