您的位置:首页 > 编程语言 > PHP开发

php脚本也能引发(Segmentation fault)段错误?

2017-03-02 22:37 483 查看


问题复现

php报
Segmentation fault
错误,从事c/c++的都知道这个程序是coredump的错误提示。

为什么执行一个php导致coredump了呢?

定位过程

看了php的error_log没有找到什么蛛丝马迹,

加调试代码,二分法注释代码,发现把一个class的构造方式注释掉就正常,加上就报这个错误,看了
_construct
的内容:

class claB extends claA {

public function __construct() {
self::__construct();
}
}


看着也没有什么不对啊,

咦,等等,好像有点问题,调用父类的构造方法应该是
parrent::__construct();
而不是
self::__construct()
.

难道这样会导致coredump?做个简单测试:

<?php

class claA {

public function __construct() {
echo "claA __construct";
}
}

class claB extends claA {

public function __construct() {
echo "claB __construct";
self::__construct();
}
}

$a = new claB();


cli测试:

php test.php

Segmentation fault

原因

果然。。。。

原因知道了:调用了自身的
construct
方法,进入死循环了。


反思

平时写代码还是要多注意这些细节啊。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php