所以我的环境是安装了php 5.3和5.5的Windows服务器2008 R2。我在php.ini中设置了fastcgi.impersonate =1
,并将IIS_IUSRS
添加到Administrator组中(这不是永久性的,只是一个临时操作,试图消除问题)。
如果我运行:
exec('dir',$output)
$output
展示了我的期望。但是,如果我运行
exec('shutdown -s -f', $output)
我没有从$output
得到任何东西,机器也没有关闭。也没有报告任何错误/警告。
我试着把同样的命令放在.bat文件中并运行
exec('shutdown.bat',$output);
但它产生的结果与通过命令行运行关机命令相同。
如果我双击shutdown.bat
文件来运行它,或者如果我在cmd窗口中键入关闭命令,机器将关闭。所以我知道指挥是好的。显然,我缺少一个更高权限的问题,但我不知道它是什么。
因此,经过多次尝试和磨难,我发现(至少在服务器2008 r2 w/IIS7中)从fast_cgi或php执行关闭命令是不可能的。我只需要安装apache并在其下执行shutdown命令,该命令就可以完美地工作。