簡體   English   中英

php exec和shell_exec無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM