首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用SIGSEGV / Wordpress退出PHP内置服务器

用SIGSEGV / Wordpress退出PHP内置服务器
EN

Stack Overflow用户
提问于 2014-05-21 22:13:05
回答 1查看 205关注 0票数 1

在本地开发wordpress博客时,我的PHP服务器会在呈现页面的过程中半途而废。

这是我的启动脚本:sudo php -S 127.0.0.1:80 -t ../reece-blog-local

我希望我能提供更多的细节,但我似乎无法从PHP获得有关这方面的任何信息。我知道它与SIGSEGV一起退出的唯一原因是,我正在使用foreman运行这个进程,否则进程就会安静地退出。

似乎没有特定的代码行会使其中断,我可以根据在退出之前设法呈现的HTML来跟踪错误区域,并且可以插入几个echo "Hello, world!",并且它会破坏其中的任何一个。

备注:

  • 直到我升级到小牛队,服务器才能正常工作,所以我认为那里可能会有干扰。
  • 确认这是发生在CURLing的任何网址,所以很可能排除了这是一个问题提供静态文件。
  • 不会耗尽我的记忆极限

如何进一步调试此问题,而不是PHP输出的任何特定错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-22 03:19:59

PHP将退出带有分段错误(SIGSEGV)错误的在无限递归的情况下,例如:

代码语言:javascript
运行
复制
function test() {
    test();
}

如果对输出进行缓冲,并且使用echo调试这样的错误,错误可能会出现在奇怪的地方(因此,它似乎会中断在像echo "Hello, world!";这样的行上)。

相反,您可以使用error_log($yourMessage, 4);将消息输出到控制台。这帮助我找到了错误(尽管从周围的阅读中可以看出,XDebug可能是查找这样的错误的首选解决方案)。

至于它的价值,这里实际上是如何进行无限递归的:

代码语言:javascript
运行
复制
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等等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23794732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档