在本地开发一个wordpress博客,我的PHP服务器在渲染页面的过程中中途死于SIGSEGV。
这是我的启动脚本:sudo php -S 127.0.0.1:80 -t ../reece-blog-local
我希望我能提供更多详细信息,但我似乎无法从PHP中获取有关此内容的任何信息。我知道它退出SIGSEGV的唯一原因是我正在与领班一起运行这个过程,否则这个过程就会默默地退出。
似乎没有特定的代码行使其中断,我可以根据在退出之前设法呈现的HTML来追踪错误的区域,我可以坚持一些{{1}并且它在任何给定的一个上都会中断。
注意:
如何进一步调试此问题,以代替PHP输出的任何特定错误?
答案 0 :(得分:1)
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等。