0

我在 Apache 2.2.14 上的 PHP 5.3.1 上遇到了这个奇怪的错误。我浏览了论坛,最怀疑这是一个 PHP 问题内存泄漏问题。在升级 PHP 时,我想知道是否有办法让服务器恢复 - 以编程方式重新启动。目前,我必须手动启动停止 Apache

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在此处输入图像描述

4

3 回答 3

1

PHP 是由 Apache 运行的,所以如果 Apache 确实崩溃了,你不能轻易地使用 PHP 再次启动 Apache,除非 PHP 被 Apache 之外的其他程序调用(例如:通过调用 PHP 将 PHP 作为 cron 作业/计划任务运行.exe [script.php] 直接)。

我通过错误消息中的路径假设您正在使用 Windows 环境(显然)。如果进程没有运行,您不希望在后台一遍又一遍地启动 Apache 的脚本或程序;这很乱。你可以,但这远非理想。

你怎么知道 Apache 崩溃了?您提供的错误来自 PHP,而不是 Apache。如果您刷新页面并且仍然看到错误(或除了连接失败/强制拒绝/等之外的任何内容),那么 Apache 仍在运行。

  • 仔细检查 Apache 确实不再运行
  • 检查 Apache 日志文件夹中的错误日志
  • 报告您的发现
于 2012-04-15T12:54:54.057 回答
1

假设您使用 mod_php 需要使用 Apache prefork worker 模型。有一个配置设置可用于实现解决方法:

使用MaxRequestsPerChild指令,您可以设置在子进程被回收之前将处理的请求数量。解决方法:将其设置为较低的值,以便 Apache 更频繁地回收它的子代。

<IfModule prefork.c>
StartServers       2
MinSpareServers    3
MaxSpareServers    3
ServerLimit       30
MaxClients        30
MaxRequestsPerChild  200
</IfModule>

请记住,这只是一个肮脏的黑客攻击,而不是您问题的严肃解决方案。

于 2012-04-15T16:52:39.733 回答
0

我阅读了大量关于该错误的博客文章,我最好的选择是升级到 PHP 5.3 并解决了问题。这肯定是由于某处的内存泄漏导致无法加载其他文件

于 2012-04-17T13:06:19.733 回答