用SIGSEGV/Wordpress退出的PHP内置服务器
问题描述:
在本地开发一个wordpress博客,我的PHP服务器在呈现页面的一半时候正在用SIGSEGV死去。用SIGSEGV/Wordpress退出的PHP内置服务器
这里是我的启动脚本:sudo php -S 127.0.0.1:80 -t ../reece-blog-local
我希望我能提供更多的细节,但我似乎无法得到任何信息了PHP的这个问题。我知道它退出SIGSEGV的唯一原因是我正在与工头一起运行这个过程,否则这个过程会静静地退出。
似乎没有特定的代码行让它突破,我可以根据HTML在退出之前设置呈现的区域来追踪错误的区域,我可以粘贴几个echo "Hello, world!"
s和它打破了它们中的任何一个。
注:
- 服务器工作正常,直到我升级到小牛队,所以想的东西有可能被干扰。
- 确认这发生在CURLing任何URL时,因此可能排除这是服务静态文件的问题。
- 没有用尽我的内存限制
我如何进一步调试这个问题,以代替由PHP任何特定的输出错误的?
答
PHP服务器将与分段故障(SIGSEGV)错误in the event of infinite recursion,如退出:
function test() {
test();
}
如果缓冲输出,并使用echo
调试这样的错误,可能会出现错误怪出现(因此为什么它看起来像echo "Hello, world!";
这样的行)
而是,您可以使用error_log($yourMessage, 4);
来输出消息到控制台。这有助于追查错误我
对于它的价值,这里是有效的我怎么了无限递归(虽然从阅读它周围似乎XDebug可能是发现这样的错误的首选解决方案。):
class TheParent {
public function __call($method, $args) {
return call_user_func_array(array($this, $method), $args);
}
}
class TheChild extends TheParent {
protected function thisIsOkay() {
echo 'yay';
}
private function sigsegv() {
echo 'no';
}
}
$c = new TheChild;
$c->thisIsOkay();
$c->sigsegv();
如果我们试图调用TheChild中的私有函数,__call将被调用,尝试访问私有函数,调用__call等。