2

我花了很多时间来弄清楚 apache2 崩溃的原因。我的环境是:

  • Debian 测试
  • Apache 2(重写、ssl 等)
  • 从 zend repo 安装的 PHP 5.3 Zend

没有什么不寻常的,但 dmesg 说:

apache2[xxxx]: segfault at 18 ip xxxx sp xxxx error 4 in libphp5.so[xxxxx]

我发现的日志中没有其他内容,很难找到问题。

4

1 回答 1

8

我已经开始从 php 模块中发现问题,因为很多分段错误与 php 模块有关。经过几次测试,我发现禁用模块 curl 可以解决问题。但在我的情况下,卷曲是必需的,所以我必须继续调查。

一个重要的想法是启用 curl 的 php-cli 可以正常工作,并且 php -m 也可以。

所以肯定是apache的问题。一个小时后,我发现禁用 ssl 和启用 curl apache 可以工作。

两个模块(mod_ssl、php_curl)存在冲突。并ldd mod_ssl.so表明该库依赖于libcrypto.so.1.0.0. 实际上 aptitude 告诉我 openssl 的版本是 1.0.0-e。但是 phpinfo() 告诉我它是用--with-openssl=/usr/local/openssl-0.9.8o. 有冲突。有两个模块依赖于 openssl,但使用不同的版本构建:0.9.8o vs 1.0.0-e!

我不得不将我的 apache2 和 openssl 版本降级到适当的版本,现在它可以工作了:ssl 和 curl 都可以。

因为很难弄清楚这个问题,所以我决定在这里发布这个提示。我希望这个小笔记可以帮助某人节省一些时间。

于 2012-05-31T10:26:01.100 回答