在本地开发wordpress博客时,我的PHP服务器会在呈现页面的过程中半途而废。
这是我的启动脚本:sudo php -S 127.0.0.1:80 -t ../reece-blog-local
我希望我能提供更多的细节,但我似乎无法从PHP获得有关这方面的任何信息。我知道它与SIGSEGV一起退出的唯一原因是,我正在使用foreman运行这个进程,否则进程就会安静地退出。
似乎没有特定的代码行会使其中断,我可以根据在退出之前设法呈现的HTML来跟踪错误区域,并且可以插入几个echo "Hello, world!"
,并且它会破坏其中的任何一个。
备注:
如何进一步调试此问题,而不是PHP输出的任何特定错误?
发布于 2014-05-22 03:19:59
PHP将退出带有分段错误(SIGSEGV)错误的在无限递归的情况下,例如:
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等等。
https://stackoverflow.com/questions/23794732
复制相似问题