PHP/Apache在脚本上崩溃(分段错误(11)


PHP/Apache crashing on script (Segmentation fault (11)

[已解决]

我在localhost上运行一个PHP脚本(包含一些内容),该脚本在结束前不断崩溃。

错误报告已打开。Opera、Safari和Firefox返回空屏幕。但Chrome回归:

无法加载网页,因为服务器未发送任何数据。错误代码:ERR_EMPTY_REPONSE

Apache日志返回:

【2013年12月15日星期日19:29:23】【通知】儿童pid 34267出口信号分段故障(11)

当我第一次遇到这个问题时,我正在使用PHP 5.5.6在降级到PHP 5.4.21之后,问题仍然存在。

问题不在脚本内部。随机注释出50行代码就解决了这个问题。这让我怀疑我的剧本是否太渴望执行了。

有人对我如何解决这个问题有什么建议吗?

更新:

问题不仅出现在本地主机上,而且出现在我在CentOs 6.4和PHP 5.3.3上运行的Web服务器上,在Apache上也出现了同样的错误。

【2013年12月15日23时15分10秒】【通知】儿童pid 18409出口信号分段故障(11)

更新2:

从命令行运行php得到:

$php index.php致命错误:调用未定义的函数第135行上Encrypt.class.php中的mcrypt_create_iv()

在Encrypt.class.php 第135行之前放置评论后

$php index.php
分段故障:11

更新3:(解决方案)

在命令行上使用strace(strace-php-index.php)运行索引后,我在其中一个查询中发现了问题。

经过更多的调试(使用PDO而不是我自己的类),我发现问题出在设置我自己的PDO选项"ATTR_PERSISTENT=>true"上。禁用此选项解决了我的问题。

更新3:(解决方案)

坚持PDO的选择让我的表现黯然失色。

用strace找到了解决方案:在命令行上使用strace(strace-php-index.php)运行索引后,我在其中一个查询中发现了问题。

在分离查询之后,我用默认的PDO替换了我的类。添加我的类的选项,直到它再次被破坏:经过更多的调试(使用PDO而不是我自己的类),我发现问题出在设置我自己的PDO选项"ATTR_PERSISTENT=>true"上。禁用此选项解决了我的问题。