【发布时间】:2019-07-29 23:00:06
【问题描述】:
我写了一段代码,它使 Apache 进程崩溃。我想知道是否有任何方法可以让我在任何地方记录任何有用的信息,或者是否有任何方法可以调查发生了什么?
崩溃的代码:
$mysqli = new mysqli($host, $user, $pass, $db);
$stmtQuery = $mysqli->prepare("SELECT ?, 'name'");
$stmtQuery->bind_result($id, $name);
$stmtQuery->attr_set(MYSQLI_STMT_ATTR_CURSOR_TYPE, MYSQLI_CURSOR_TYPE_READ_ONLY);
$stmtQuery->bind_param('i', $i);
$stmtQuery->execute();
$stmtQuery->get_result()->fetch_assoc();
PHP error_log 中没有任何内容。
在 Apache error_log 中,我看到的只是:
[mpm_winnt:notice] [pid 8212:tid 652] AH00428: Parent: child process 20232 exited with status 3221225477 -- Restarting.
我不知道这个状态意味着什么,我正在寻找更深入的崩溃报告。
【问题讨论】:
-
你可以使用 Blackfire。它是一个调试器工具,可以帮助您识别这一点。
-
是的,这是谷歌的第一个结果。该解决方案说要增加 Apache 进程的堆栈大小,但是如果我在 PHP 中触发了段错误,我想知道它为什么会发生。我希望 Apache 能在某处保存一些崩溃日志,但我找不到。
-
我在这里阅读了一些结果,人们建议的“修复”差异很大。我还没有找到任何关于如何正确诊断崩溃原因的信息,我同意这似乎更有用。
-
哇,有很多关于这个的问答。我很惊讶我从来没有遇到过。