很长一段时间以来,我在 FreeBSD9.1(Apache 2.2)服务器上都看到过这样的错误
# dmesg
pid 69320 (httpd), uid 80: exited on signal 11
pid 69307 (httpd), uid 80: exited on signal 11
pid 69416 (httpd), uid 80: exited on signal 10
pid 93318 (httpd), uid 80: exited on signal 11
pid 93295 (httpd), uid 80: exited on signal 11
pid 93289 (httpd), uid 80: exited on signal 11
pid 93965 (httpd), uid 80: exited on signal 11
pid 93993 (httpd), uid 80: exited on signal 11
经过搜索发现相关问题: http://dready.org/blog/2010/07/04/httpd-exited-on-signal-11-solved/ 还有几个人建议禁用 mbstring。我没有尝试这个,因为我在 phpmyadmin 中需要 mbstring。http://www.php.net/manual/en/intro.mbstring.php 我之前使用的是 php5.3,今天升级到 5.4.19,这个错误仍然存在。实际上 Apache 运行正常,退出后似乎又生成了子进程。
答案1
哪里可以获得更精确的信息?
您可以在主 Apache 错误日志中找到更多信息,该日志位于 httpd.conf 中的任何块之外。
类似的问题,有可行的解决方案,但不保证这是您的问题
你在以下位置找到的解决方案这篇博文描述了一位系统管理员试验并解决了一个问题。
为什么你认为这也是你的问题?软件因为某些原因无法退出?
mod_php、PHP 作为 CGI 和 php-fpm
如果您确实认为您的问题与 PHP 有关,那么您可以通过三种方式将 PHP 与 Apache 结合使用:
- 使用 mod_php,就像这篇博文作者。启动 Apache 时会加载 PHP 解释器并准备执行脚本
- 作为 CGI,就像在传统和当前的共享托管环境中一样,通常使用修补的 SuEXEC 来提供托管设施,类似 suphp 的东西可以满足较小的需求。每个脚本都由 PHP 独立执行,Apache 获取输出并打印它。
- 使用 php-fpm 实现当前的专用托管和尖端的共享托管环境。PHP 的 FastCGI 实现,具有已加载到内存中的 PHP 解释器的进程池,随时可以执行 PHP 代码。选择此解决方案将为您提供比 CGI 更好的性能。
如果你选择使用 php-fpm,Apache 维基包含提示和安装说明。
一旦您在 CGI 模式或 php-fpm 中切换配置,由于 PHP 代码在 Apache 之外执行:
- 如果 Apache 仍然退出,则进程错误来自其他原因,与 PHP 无关。
- 如果 Apache 没有问题,那么恭喜你,这是一个 mod_php 问题,现在你没问题了。