[已解决]
我在本地主机上运行一个包含一些文件的PHP脚本,但总是在结束前崩溃。
错误报告已打开。Opera、Safari和Firefox返回一个空屏幕。但Chrome返回:
无法加载网页,因为服务器没有发送任何数据。错误代码:ERR_EMPTY_RESPONSE
Apache日志返回:
[Sun Dec 15 19:29:23 2013] [notice] child pid 34267 exit signal Segmentation fault (11)
第一次遇到此问题时使用的是PHP 5.5.6。降级到PHP 5.4.21后仍然存在问题。
问题不在脚本内部。随机注释掉50行代码中的几行可以解决问题。这让我想知道我的脚本是否太长而不能执行。
有人有什么建议吗?如何解决这个问题?
更新:
问题不仅出现在本地主机上,还出现在CentOs 6.4和PHP 5.3.3上运行的Web服务器上,在Apache上产生相同的错误。
[Sun Dec 15 23:15:10 2013] [notice] child pid 18409 exit signal Segmentation fault (11)
更新2:
从命令行运行php:
$ php index.php 致命错误:在Encrypt.class.php的第135行调用未定义的函数 mcrypt_create_iv()
在Encrypt.class.php的第135行之前加上注释后:
$ php index.php
Segmentation fault: 11
更新3(解决方案):
在使用strace (strace php index.php) 命令行运行index后,我在其中一个查询中找到了问题。
经过更多的调试(使用PDO而不是我的自己的类),我发现问题出在设置自己的PDO选项“ATTR_PERSISTENT => true”上。关闭此选项解决了我的问题。