在IIS中使用PHP重新启动Apache

时间:2012-09-21 06:58:35

标签: php iis-7 exec apache2.2

我尝试使用一个bat文件重新启动我的Apache2.2网络服务器,这个文件由运行在IIS中的PHP使用exec()调用,Apache和IIS位于同一服务器中。

PHP代码

exec("cmd /c restart.bat");

bat文件

"PATH_TO_APACHE\bin\httpd.exe" -k restart -n Apache2.2

当我通过http加载我的php重新启动时,我得到一个"无法打开日志"我的Apache错误日志文件中出错。

我的大多数搜索结果都表示存在端口80冲突,但是当我执行netstat时没有,我的IIS正在侦听不同的端口。双击.bat文件可以正常工作,但从PHP运行它会收到错误。有任何想法吗?请指教。

1 个答案:

答案 0 :(得分:0)

IIS在指定用户的上下文中运行所有可执行脚本,通常这是IUSR_ [MACHINENAME]帐户。 可以在池配置中的IIS配置中更改此帐户。

您遇到的问题可能是该用户不允许访问日志文件位置。

为了追踪这个问题我会: 1.(危险,仅用于测试):将IUSR帐户放入本地管理员组。再次测试。如果它有效,你知道这是一个权限问题。 2.尝试使用runas命令运行cmd.exe作为IUSR用户并在控制台窗口中执行命令,这样您就可以看到所有错误消息并更轻松地进行测试。 3.允许IUSR写入apache日志位置。

完全不同的尝试是在PHP中创建标记文件,并使用以管理员身份运行的计划任务来重新启动apache(如果该标记文件存在)。这样,您就不需要为IUSR帐户授予更多权限,并且需要单独的代码来处理重启。