我想從我的web服務器上的php文件中運行PowerShell命令。從PHP運行PowerShell命令
這裏是我的PHP代碼:
<?php
$query = shell_exec('C:\\Windows\\syswow64\\WindowsPowerShell\\v1.0\\powershell.exe -command Get-Host');
echo $query;
?>
結果我得到的是HTTP錯誤500 - C:\ PHP \ PHP-cgi.exe文件 - FastCGI進程超出了配置活動超時 - 錯誤代碼0x80070102
執行一個測試來驗證shell_exec和php是否正常工作(我在設置環境時沒有搞錯)。我也試過這個PHP:
<?php
$query = shell_exec('dir c:\\');
echo $query;
?>
這個工作,頁面的源代碼看起來完全一樣,如果你已經運行DIR C你所期望的:\命令從Windows命令提示符。
我已經看了幾個其他文章在這裏在stackoverflow,以及在technet上,似乎無法確定是什麼導致這超時。當我從命令提示符運行相同的命令時,結果非常快。
以下是在命令提示符下執行手動相同的命令(再次你所期望的)結果:
C:\>C:\Windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -command Get-Host
Name : ConsoleHost
Version : 2.0
InstanceId : 9a24a372-f0a3-4a79-b9fd-1e180e9a8069
UI : System.Management.Automation.Internal.Host.InternalHostUserI
nterface
CurrentCulture : en-US
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
了一下我的環境:
我運行IIS 7.5在Windows 2008 R2 SP1標準服務器上。
服務器是獨立的(不屬於域的一部分)。
我有PHP 5.5.9安裝,並工作。 phpinfo()返回期望的頁面,沒有任何明顯的錯誤。
任何幫助讓我跟蹤從執行PowerShell命令從PHP非常感謝!