![Apache 不再随 Windows 启动而启动](https://linux22.com/image/581523/Apache%20%E4%B8%8D%E5%86%8D%E9%9A%8F%20Windows%20%E5%90%AF%E5%8A%A8%E8%80%8C%E5%90%AF%E5%8A%A8.png)
我已将 Apache 安装在 XAMPP 本地测试服务器中。它配置为 Windows (XP) 服务。启动类型为“自动”。长期以来,它总是在 Windows 启动时启动,但最近这种情况不再发生了。我现在需要通过 XAMPP 控制面板手动启动它 - 此时它似乎启动正常。
我记得,这台机器最近唯一的更新是 Windows 更新 - 似乎没有与此相关的“已知问题”。还有 Google Chrome 的更新。
有什么想法可以阻止 Apache 在 Windows(XP)启动时自动启动?
编辑#1
我的系统事件日志中有 2 个与服务控制管理器相关的错误:
等待 Apache2.2 服务连接超时(30000 毫秒)。
Apache2.2 服务启动失败,错误原因如下:该服务没有及时响应启动或控制请求。
当我在启动后手动启动 Apache 服务器时,会出现 2 个“信息”事件,表明它“已发送启动控制”和“已进入运行状态”。不过我注意到,根据事件日志,从发送启动控制到进入运行状态似乎需要 19 秒。
所以,也许 30 秒内启动Apache 启动的时间还不够长吗?
答案1
如果您在启动时遇到设置为“自动”的服务启动问题,请尝试通过配置依赖项来延迟它。例如,将 apache 服务设置为依赖于 TCP/IP 堆栈。这样它只会在 TCP/IP 服务之后启动。
另一种方法是将其设置为手动,并在启动时运行计划任务,调用等待 60 秒的脚本并启动 apache 服务,例如:
WScript.Sleep(60000)
strServiceName = "Apache Server Service"
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colServices = objWMI.ExecQuery ("Select * from Win32_Service Where Name ='" & strServiceName & "'")
For Each objService in colServices
objService.StartService()
Next