困惑:PHP致命错误:在第0行的未知中抛出没有堆栈帧的异常?
我发现错误的一个常见原因是从异常处理程序中引发异常。我很确定这不会发生在我试图调试的应用程序中...但是我已经把所有的初始化处理行放在索引的顶部.php尝试/捕获。
显然,这种情况也可能发生,因为某些内容无法序列化以存储在会话中。这个应用程序最多将数组存储到会话中(相当多),但我相信它不会在其中存储任何不寻常的东西。
有人评论说,这发生在他们身上,因为他们的主键需要是CHAR(32)而不是INT(11)。。此应用程序中的PK都是INT。
其他建议是,这可能是 PHP 5.3.3 在 5.3.6 中修复的问题,即已满磁盘,并且需要对 SimpleXML 值进行类型转换。我们确实碰巧运行PHP 5.3.3,但在这种情况下,升级必须是最后的手段。它并不总是这样做。
更新/注意:我实际上无法自己重现错误,只能在日志中看到它发生,请参阅下面的段落,了解我认为错误发生的位置...
*从错误日志中,似乎至少有一个地方正在发生它是索引.php。我推断这一点只是因为它在某些条目中由引用URL指示。try/catch 代码目前仅位于脚本的“top”初始化部分附近,下面主要是 HTML 输出。输出中有一些PHP代码(虽然非常简单),所以我可能需要测试它。下面是 catch 部分,它不会在日志中生成任何输出:
} catch (Exception $e) {
error_log(get_class($e)." thrown. Message: ".$e->getMessage(). " in " . $e->getFile() . " on line ".$e->getLine());
error_log('Exception trace stack: ' . print_r($e->getTrace(),1));
}
真的非常感谢任何提示!
编辑:PHP作为Apache模块运行(Server API:Apache 2.0 Handler)。我不认为有任何PHP加速器在使用中,但可能只是我不知道该怎么说。维基百科上列出的没有一个在phpinfo()中。
据我所知,MPM是prefork。这是我第一次研究MPM:
# ./httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c