我有一个使用shell_exec命令的PHP页面:
$psscriptpath = "C:\inetpub\htdocs\school_panel\scripts\change.ps1";
shell_exec("powershell.exe -executionpolicy remotesigned -File " . $psscriptpath . " -username \"" . $username . "\" -password \"" . $password . "\"");
然而,当我提交页面也已执行上面的代码时,我的页面只是超时(从未完成加载,直到达到超时计时器并且我收到此错误):
http://puu.sh/aXEdY/22cc87310c.png
现在我做了一些研究,看来我需要以某种方式在IIS / PHP中设置某种执行脚本权限/权限? mabey改变一些php.ini配置?我真的不确定。
我已经尝试为powershell添加IUSER等权限。我甚至将powershell上的执行策略设置为remotesigned。看来我在IIS上安装了FastCGI和CGI模块。
我也尝试过使用php运行CMD脚本并且工作正常,而不是在浏览器中。
此致
答案 0 :(得分:0)
您的解决方案就像这样简单:
shell_exec("powershell.exe -executionpolicy remotesigned -File {$psscriptpath} -username {$username} -password {$password} < NUL");
您不需要用双引号括起参数,并且为了防止powershell挂起,您需要在该行的末尾传递< NUL
。
< NUL
将强制PowerShell的输出返回PHP。