【问题标题】:Laravel 3, mysql or redis down shows blank screen rather than redirecting to 500 error screenLaravel 3、mysql 或 redis down 显示空白屏幕而不是重定向到 500 错误屏幕
【发布时间】:2014-03-18 03:26:03
【问题描述】:

我正在测试我的应用程序以确保它在生产中正确处理错误,其中一项测试是它使用的 mysql 或 redis 服务是否已关闭。

我正在寻找它来显示 500 错误页面,但目前它显示的是空白页面。

我尚未在 Laravel 4 下对此进行测试,但我正在开发的应用程序正在使用 Laravel 3,并且对于生产,错误配置设置为不显示详细信息并改为记录。

我宁愿它转到 500 页面,这样至少用户知道在这种罕见的情况下有错误,它可能会关闭。

有人知道这是否可能吗?还是这就是 Laravel 4 中发生的事情?


[编辑 1]

在调查中,似乎 MySQL 连接直到我的第一个 db 调用才发生,因此我的第一个 db 调用位于 start.php 文件中。现在我可以将此调用包装在 try/catch 但此时我不能return Response::error('500'); 因为它不在路由或控制器中,并且Event::fire(500) 在此阶段也不起作用,因为它需要读取其他文件在诸如也有 db 调用的路由文件之后。

所以我现在寻找的是一种直接从 start.php 文件调用 500 错误页面的方法,并在此时停止应用程序运行,甚至在加载 routes.php 文件或任何其他文件之前。

有什么想法吗?

【问题讨论】:

    标签: php mysql error-handling laravel laravel-3


    【解决方案1】:

    这就是在 Laravel 4 中发生的事情,无论如何,以我有限的经验来看。

    查看服务器日志以获得可能的答案。

    【讨论】:

    • 嗨 GrapeCamel,感谢您确认这在 L4 中有效,所以至少我的应用程序在 L3 上的当前版本可能存在问题。我检查了日志,但日志只是指向无法连接的 mysql 错误,这是一个抛出的异常,但它在连接到数据库的 laravel 代码中抛出,所以我不知道如何捕获这个错误并以错误页面响应。我可以编辑我的问题以显示错误输出,但如果这有助于追踪我们可以捕获它的位置,但我认为它在我的任何代码开始之前。
    • 再次嗨,我已经编辑了这个问题,现在你提示我多看日志让我注意到 laravel 核心在应用程序之前没有建立连接,它是 start.php包含我的 db 调用的文件,这使得初始 mysql 连接,任何更多的帮助将非常感谢。
    猜你喜欢
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2015-10-03
    • 2020-07-17
    相关资源
    最近更新 更多