當我登錄到Windows Server 2008和使用的cmd.exe(作爲管理員)運行這段代碼,它的工作原理:從CMD啓動代碼但不通過PHP執行腳本......這是爲什麼?
php -f e:\path\to\file\file-name.php go 4001
然而,當我嘗試從一個PHP文件來啓動這一點,沒有:
$cmd = escapeshellarg("php -f e:\path\to\file\file-name.php go 4001");
exec($cmd);
exit;
我已經在它6個小時,並找不到解決方案。我甚至嘗試過使用pstools來訪問psexec
,但仍然沒有運氣。我甚至無法從命令行獲取psexec,因爲我似乎無法通過(go和4001)傳遞變量。
更新
當我運行使用PHP文件中的代碼,什麼也沒有發生,我想創建的文件還沒有生成,我不知道如何通過這種方法拋出錯誤。
<?php
if(function_exists('exec')) {
echo "exec is enabled";
}
?>
輸出,exec已啓用。
請幫忙!
「不起作用」並不能很好地描述發生了什麼事情。任何錯誤消息?日誌?實際和預期產出是多少?你的php.ini中允許使用'exec'嗎? – ccKep
你需要對Windows進行雙重轉義,因爲前php會考慮你的代碼中的'\ t'作爲標籤,所以我建議你加倍轉義\斜槓,因爲你的代碼被包含在雙引號之間''' – shatheesh
用雙引號'''一些php文件的路徑需要轉義也請看http://www.php.net/manual/en/function.escapeshellarg.php –