我需要在php腳本中運行.cmd批處理文件。如何在PHP中運行.cmd文件並顯示結果
PHP將通過瀏覽器中經過身份驗證的會話進行訪問。
當我從服務器的桌面運行.cmd文件時,它將一些輸出吐出到cmd.exe。
我想將這個輸出路由回php頁面。
這是可行的嗎?
我需要在php腳本中運行.cmd批處理文件。如何在PHP中運行.cmd文件並顯示結果
PHP將通過瀏覽器中經過身份驗證的會話進行訪問。
當我從服務器的桌面運行.cmd文件時,它將一些輸出吐出到cmd.exe。
我想將這個輸出路由回php頁面。
這是可行的嗎?
是的,它是可行的。您可以使用
exec("mycommand.cmd", &$outputArray);
和打印數組的內容:
echo implode("\n", $outputArray);
$result = `whatever.cmd`;
print $result; // Prints the result of running "whatever.cmd"
您可以使用shell_exec
,或者backticks operator,來啓動命令,並得到輸出作爲一個字符串。
如果要將參數傳遞給該命令,則應該設想在調用命令之前使用escapeshellargs轉義它們;你可能看看escapeshellcmd太^^
使用PHP的popen()函數
我更喜歡使用popen對於這樣的任務。特別是對於長時間運行的命令,因爲您可以一行一行地提取輸出並將其發送給瀏覽器,所以減少超時的機會。這裏有一個例子:
$p = popen('script.cmd', 'r');
if ($p)
{
while (!feof($p))
echo gets($p); // get output line-by-line
pclose($p);
}
[再次添加註釋,因爲鏈接是borked]不會在反引號中包含.cmd文件,就像這裏的.bat文件的例子一樣嗎? http://www.php.net/manual/pl/language.operators.execution.php – sigint 2009-07-18 02:39:52