php分段故障函数调用


php segmentation fault function call

调用对象的方法时出现分段错误。该方法实际上是在基类中实现的,我在站点中的许多不同地方调用了相同的方法,但当我在这种特殊情况下调用它时,我会遇到分段错误。

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.

如果我在方法的第一行中放置一个exit命令,postUpdatePHP就会出现分段错误。postUpdate方法只是基于$_POST更新对象的内容。没有递归。故障立即发生。在调用该方法和该方法中会导致分段错误的第一行代码之间,会出现什么问题?在Apache 2.4.7上运行PHP 5.5.9版本。

我一直在挖掘,发现错误出现在由通用方法postUpdate调用的例程中,由于键入错误,postUpdate确实引入了无限递归。所以这是老的分割错误。