【发布时间】:2018-02-14 08:07:02
【问题描述】:
我最近在 Laravel 5.5 中启动了一个小项目。我将我的 Homestead 盒子更新到了最新版本。
在编写测试时,如果我拼写错误的断言方法会遇到段错误,我在 github 存储库上创建了一个问题,可以在 https://github.com/laravel/framework/issues/20925 找到该问题
问题现在已经关闭,这是我的错误(asertPushedOn() 而不是assertPushedOn())。
但是我最近遇到了另一个段错误,再次,这是我的错误(尝试 eagerload 时错误命名关系),但问题是,这在 5.5 之前从未发生过。现在,似乎当我把事情搞砸时,我会随机出现段错误。我在日志中找不到任何帮助调试它们的东西(Laravel 日志文件或 nginx 错误日志。
我收到的唯一错误消息是Segmentation fault (core dumped),它什么也没告诉我。
在问题报告中,它提到 xdebug 会转储错误。我有一个laravel homestead xdebug 的谷歌,但只能找到 phpstorm 的资源(我是一个崇高的用户)。
TL;DR:
1) 在 Laravel 5.5 中更新了宅基地框,如果我在某个地方搞砸了,我现在会遇到 php 段错误。这是 5.5 / 宅基地的变化吗?
2) 如何启用 xdebug(这实际上有助于调试段错误)?
3) 如果 xdebug 不是答案,我该如何停止获取或从 segfaults 获取更多默认调试信息?
正如我创建的问题中所述,我对段错误了解不多。
如果您需要任何进一步的信息,请告诉我
编辑
我设法通过以下方式启用 xdebug:
sudo phpenmod xdebug
sudo service nginx restart
php -m
但我无法重现段错误(启用和未启用 xdebug),这让段错误让我更加困惑。
【问题讨论】:
-
你可能有一个递归函数会耗尽你所有的内存。所以你的内存用完了,它会给你那个错误。你能分享你的代码吗?
-
我假设递归,但我找不到任何。不可能共享代码,因为我认为这可能部分是由于框架 - 但只能通过我的错误实现。这只是过去,我确信大型递归已经被 xdebug 或 Homestead 中的其他一些进程捕获并出错(这至少给了我一些关于从哪里开始调试的信息)。
标签: php laravel segmentation-fault laravel-5.5