Я получаю ошибку сегментации, когда я вызываю метод объекта. Метод фактически реализован в базовом классе, и я вызываю один и тот же метод во многих местах на моем сайте, но когда я вызываю его в этом конкретном случае, я получаю ошибку сегментации.
print "<p>\$picture=" . print_r($picture, true) . "</p>\n";
// apply any changes passed in parameters
if (method_exists($picture, 'postUpdate'))
print "<p>object has a postUpdate method</p>\n";
else
print "<p>object does not have a postUpdate method</p>\n";
$picture->postUpdate(true);
Если я помещаю команду выхода непосредственно перед вызовом postUpdate, я вижу:
$picture=LegacyPicture Object ( [row:protected] => Array ( [idbr] => 0 [idir] => 20553 [idtype] => 0 [pictype] => 0 [picorder] => 0 [picname] => [picnameurl] => [idbppic] => 1 [piccaption] => [picd] => [picsd] => [picdate] => [picdesc] => [picprint] => 0 [picsoundname] => [picsoundnameurl] => [idbpsound] => 0 [used] => 0 [picpref] => 1 [filingref] => ) [changed:protected] => Array ( ) [table:Record:private] => tblBR [prime:Record:private] => idbr [needInsert:protected] => 1 )
object has a postUpdate method.
Если я помещаю команду выхода в самую первую строку метода postUpdate, PHP получает ошибку сегментации. Метод postUpdate просто обновляет содержимое объекта на основе $ _POST. Там нет рекурсии. Ошибка происходит немедленно. Что может пойти не так между вызовом метода и самой первой строкой кода в методе, что может вызвать ошибку сегментации? Запуск PHP версии 5.5.9 на Apache 2.4.7.
Я продолжал копать и обнаружил, что ошибка была в подпрограмме, вызываемой общим методом postUpdate, который в результате ошибки при вводе вводил бесконечную рекурсию. Так что это та же самая старая ошибка сегментации.
Других решений пока нет …