php分段故障函数调用

时间:2014-10-01 02:29:22

标签: php ubuntu-14.04

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

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更新对象的内容。没有递归。故障立即发生。在调用方法和方法中可能导致分段错误的第一行代码之间会出现什么问题?在Apache 2.4.7上运行PHP 5.5.9版。

1 个答案:

答案 0 :(得分:0)

我一直在挖掘,发现这个bug是在一个普通方法postUpdate调用的例程中,由于输入错误确实引入了无限递归。所以这是旧的分段错误。