【发布时间】:2012-09-21 06:58:35
【问题描述】:
我正在尝试使用 bat 文件重新启动我的 Apache2.2 网络服务器,该文件由在 IIS 中使用 exec() 运行的 PHP 调用,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 运行它会出错。有任何想法吗?请指教。
【问题讨论】:
-
可能是因为蝙蝠是在IUSR下运行的?
-
我也添加了对 cmd.exe 的权限,但我得到了同样的错误,在安全选项卡中添加了 NETWORK SERVICE 和 IUSR
-
不确定这是否有帮助,但我曾经不得不启动一个后台进程(bat 中的
start /B php longtimejob.php)并且使用exec、system、passthru没有成功。最后我使用了pclose(popen("work.bat","r"))并工作了。所以也许你可以试试popen和proc_open。 -
我收到同样的错误“无法打开日志”,可能是权限问题,但我不确定还有什么可以授予权限。
-
将apache安装为服务并使用
net stop;net start重启apache服务。这应该可以帮助您更好地阐明权限。我怀疑apache实际上需要更多的权利。例如检查错误日志文件的权限。