Я обнаружил, что одной из распространенных причин ошибки является исключение, создаваемое в обработчике исключений. Я совершенно уверен, что этого не происходит в приложении, которое я пытаюсь отладить... Но я поместил все строки обработки инициализации в начало index.php в try/catch. *
Очевидно, это также может произойти, потому что некоторые вещи не могут быть сериализованы для хранения в сеансе. Самое большее, это приложение хранит массивы в сеансе (совсем немного), но я уверен, что оно не хранит в нем ничего необычного.
Кто-то заметил, что это случилось с ними, потому что их первичный ключ должен был быть CHAR (32) вместо INT (11). ПК в этом приложении все INT.
Другие предложения заключаются в том, что это может быть проблема с PHP 5.3.3, исправленная в 5.3.6, полный диск, и необходимость типизировать значение SimpleXML. Мы используем PHP 5.3.3, но в этом случае обновление должно быть последним средством. Так было не всегда.
ОБНОВЛЕНИЕ/ПРИМЕЧАНИЕ: я на самом деле не могу воспроизвести ошибку самостоятельно, только вижу, что это происходит в журналах, см. Ниже параграф, где я считаю, что ошибка происходит...
* Из журналов ошибок кажется вероятным, что по крайней мере одно место, где это происходит, - index.php. Я делаю это только потому, что это указано в некоторых записях по ссылке URL. Код try/catch в настоящее время находится только вокруг "верхней" части инициализации скрипта, ниже которой в основном вывод HTML. В выводе есть некоторый PHP-код (хотя и довольно простой), поэтому мне может понадобиться проверить это. Вот часть catch, которая не производит никаких выводов в журналах:
} catch (Exception $e) {
error_log(get_class($e)." thrown. Message: ".$e->getMessage(). " in " . $e->getFile() . " on line ".$e->getLine());
error_log('Exception trace stack: ' . print_r($e->getTrace(),1));
}
Буду очень признателен за любые советы по этому вопросу!
РЕДАКТИРОВАТЬ: PHP работает как модуль Apache (серверный API: обработчик Apache 2.0). Я не думаю, что используются какие-либо ускорители PHP, но я просто не знаю, как это сказать. Ни один из перечисленных в Википедии не находится в phpinfo().
Насколько я могу судить, MPM - это prefork. Это первый раз, когда я заглянул в MPM:
# ./httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c