我在Apache 2.2.14上的PHP 5.3.1上遇到了这个奇怪的错误。我通过论坛,大多数人怀疑这是一个PHP问题的内存泄漏问题。我升级PHP的时候,我想知道服务器是否有办法恢复 - 以程序方式重新启动。目前,我必须手动启动 - 停止Apaache
Warning: Attempt to assign property of non-object in D:\xampp_ext\xampp\htdocs\soki\test.soki.com\symfony\lib\autoload\sfCoreAutoload.class.php on line 38
Warning: require(/config/sfProjectConfiguration.class.php) [function.require]: failed to open stream: No such file or directory in D:\xampp_ext\xampp\htdocs\soki\test.soki.com\symfony\lib\autoload\sfCoreAutoload.class.php on line 99
Fatal error: require() [function.require]: Failed opening required '/config/sfProjectConfiguration.class.php' (include_path='.;d:\xampp_ext\xampp\php\PEAR') in D:\xampp_ext\xampp\htdocs\soki\test.soki.com\symfony\lib\autoload\sfCoreAutoload.class.php on line 99
我在Apache 2.2.14上使用PHP 5.3.1
答案 0 :(得分:1)
PHP由Apache运行,所以如果Apache确实崩溃了,你就不能轻易使用PHP再次启动Apache ,除非除了Apache之外的其他程序调用PHP (例如:运行PHP通过直接调用PHP.exe [script.php]作为cron作业/计划任务。
我假设您在错误消息中的路径中显示您正在使用Windows环境(显然)。如果进程没有运行,你不希望后台的脚本或程序一遍又一遍地启动Apache;那太乱了。你可以,但这远远不够理想。
你怎么知道Apache崩溃了?您提供的错误是来自PHP的错误,而不是Apache。如果刷新页面仍然看到错误(或连接失败/强制拒绝/等等),那么Apache仍在运行。
答案 1 :(得分:1)
假设您使用mod_php需要使用Apache prefork worker模型。您可以使用配置设置来实施解决方法:
使用MaxRequestsPerChild指令,您可以设置在回收子进程之前将处理的许多请求。 解决方法:将其设置为较低的值,以便Apache更频繁地回收它的子项。
<IfModule prefork.c>
StartServers 2
MinSpareServers 3
MaxSpareServers 3
ServerLimit 30
MaxClients 30
MaxRequestsPerChild 200
</IfModule>
请记住,这只是一个肮脏的黑客,而不是您问题的严重解决方案。
答案 2 :(得分:0)
我阅读了数以万计的关于错误的博客文章,我最好的选择是升级到PHP 5.3并解决了这个问题。这肯定是由于某处的内存泄漏导致无法加载其他文件