PHP 导致分段错误和 Apache 空白响应

PHP 导致分段错误和 Apache 空白响应

我最近使用以下方法将 Debian Lenny 服务器更新到 php 5.3,5点德布来源。执行此操作后不久,服务器上的某些(但不是全部)站点停止响应请求。将返回空白响应 - 没有标题,没有内容,什么都没有。

我发现这个相关问题在 stackoverflow 上似乎描述了类似的内容,并使用了用户在答案中相同的代码来查看我是否可以复制该问题:

<?php

class A {
    public function __construct()
    {
        new B;
    }
}

class B {
    public function __construct()
    {
        new A;
    }
}

new A;

print 'Loaded Class A';

?>

这引发了问题 - 尽管原始问题指出此问题已在 PHP 5.5.0 中修复,但页面什么也没有返回。没有您期望的 CPU 阻塞,没有等待,只是几乎立即没有响应。

然后我从 cli ( php -f test.php) 运行相同的代码,得到的唯一输出是“分段错误”。

跟踪内核日志我发现:

2 月 16 日 07:04:06 生物内核:[192203.269037] php[17710] 一般保护 ip:76ef37 sp:7fff155e9bb0 错误:0 位于 php5[400000+870000] 2 月 16 日 08:57:31 生物内核:[199639.699854] apache2[31136]:在 7fff13a84fe0 ip 7f730514ea40 sp 7fff13a85008 处发生段错误,libphp5.so[7f7304ce8000+915000] 中出现错误 6

一切都非常奇怪,我不确定它指向什么/我应该做什么来进一步调试它。正如我所说,有些网站可以工作,但上述代码肯定会触发它。并不是说我想要服务器的网站有这样的代码 - 这只是一个例子。

任何帮助深表感谢!

答案1

看起来是因为苏霍辛。将其作为 php 模块禁用后一切又恢复正常。

答案2

为了便于将来参考,您通常希望在使用 的进程上启用 coredump ulimit -c unlimited,然后通过 运行生成的核心转储gdb以从中获取回溯。有时您也可以使用ltrace来跟踪库调用,尽管这种方法提供的信息不太有用。

相关内容