Назад | Перейти на главную страницу

PHP вызывает ошибку сегментации и пустой ответ Apache

Недавно я обновил сервер Debian Lenny до php 5.3,5, используя dotdeb источник. Вскоре после этого некоторые (но не все) сайты на сервере перестали отвечать на запросы. Будет возвращен пустой ответ - без заголовков, без содержимого, ничего.

я нашел этот связанный вопрос в 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. Никакого блока ЦП, как и следовало ожидать, никакого ожидания, просто почти мгновенный нулевой ответ.

Затем я запустил тот же код из cli (php -f test.php), и единственный вывод, который я получил, был «Ошибка сегментации».

Просматривая журнал ядра, я обнаружил:

16 февраля 07:04:06 ядро ​​существа: [192203.269037] php [17710] общая защита ip: 76ef37 sp: 7fff155e9bb0 ошибка: 0 в php5 [400000 + 870000] 16 февраля 08:57:31 ядро ​​существа: [199639.699854] apache2 [ 31136]: segfault на 7fff13a84fe0 ip 7f730514ea40 sp 7fff13a85008 ошибка 6 в libphp5.so [7f7304ce8000 + 915000]

Все очень странно, и я не уверен, на что это указывает / что мне делать, чтобы отладить это дальше. Как я уже сказал, некоторые сайты работают, но код, подобный приведенному выше, определенно вызывает это. Не то, чтобы на сайтах, которые я хочу серверить, есть такой код - это просто пример.

Любая помощь высоко ценится!

Для справки в будущем вы обычно хотите включить резервные копии для процесса, используя ulimit -c unlimited, затем запустите созданный дамп ядра через gdb чтобы отследить это. Иногда вы также можете использовать ltrace для отслеживания вызовов библиотеки, хотя этот метод дает менее полезную информацию.

Похоже, все дело в Сухосин. Отключил его как модуль php, и все снова работает нормально.