2012-05-09 17 views
4

私はこのコードを使用するとpowershellスクリプト を実行する単純なPHPを実行しようとしていますが、コマンドウィンドウで結果を取得しますが、私はNULが出力を破棄します信じてブラウザがハングアップするPowershellを実行するPHPを実行する

<?php 
exec("powershell C:\\Inetpub\\wwwroot\\my_shell.ps1 < NUL", $output); 

echo "<pre>"; 
print_r($output); 
echo "</pre>"; 
?> 

は、しかし、それは、ブラウザで動作します[このFourm]でそれを発見した[1]

私はこのコードを使用する場合は、NULせずに私はなりますコマンドウィンドウに結果が表示されますが、ブラウザでスクリプトを実行すると永遠にロードされ続けることはありません。 sults:

exec("powershell C:\\Inetpub\\wwwroot\\emsrDev\\manual_shell.ps1", $output); 

同じ結果、私はそれを行う場合は、この方法:私は独立して、それを実行した場合

$output = shell_exec("powershell C:\\Inetpub\\wwwroot\\emsrDev\\manual_shell.ps1"); 

のPowerShellスクリプトは正常に動作します:

$cmd = "cmd.exe"; 
&$cmd "/C echo update tasks set last='manual' where id='8'; | sqlplus vvv/[email protected]"; 

だから私はこの中を実行する必要がありますブラウザを開き、出力を取得します。

+0

情報が不十分です。 'powershell'コマンドが動いているコードを投稿してください。 –

+0

http://stackoverflow.com/a/5319219/763026 - こちらをご覧ください。 Set-ExecutionPolicy RemoteSigned -Scope LocalMachineを実行することをお勧めします。これにより、マシン上のすべてのユーザーアカウントで問題なくローカルスクリプトを実行できますが、インターネットからダウンロードしたスクリプトを実行するには確認が必要です。 –

+0

@SeeSharp実行ポリシーは正常に動作しますが、私はpowershellから直接スクリプトを実行できます。ありがとうございます。 – OmarL

答えて

1

powershellプロセスが終了していないため、ブラウザがハングします。スクリプトの末尾に以下を追加してください。

Stop-Process -processname powershell* 
関連する問題