Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更改“;哎呀,好像出了什么事。”;消息_Php_Laravel_Exception Handling_Laravel 4 - Fatal编程技术网

Php 更改“;哎呀,好像出了什么事。”;消息

Php 更改“;哎呀,好像出了什么事。”;消息,php,laravel,exception-handling,laravel-4,Php,Laravel,Exception Handling,Laravel 4,我肯定我错过了一些愚蠢的事情。我试图替换出现异常时Laravel抛出的非调试错误屏幕。它似乎忽略了下面的代码(位于start/global.php): 为什么它会忽视这一点?我应该在别的地方也做些什么吗 澄清一下: 我正在用一个QueryException(HY000)来测试它。但这肯定不会有什么不同吗 在app/global.php中使用Laravel4.2,有一个默认的错误处理程序设置。你会想删除它来使用你的,或者只是修改它 请查看此以了解更多信息 很难说没有看到您的系统,但我的第一个猜测是

我肯定我错过了一些愚蠢的事情。我试图替换出现异常时Laravel抛出的非调试错误屏幕。它似乎忽略了下面的代码(位于
start/global.php
):

为什么它会忽视这一点?我应该在别的地方也做些什么吗

澄清一下: 我正在用一个
QueryException
HY000
)来测试它。但这肯定不会有什么不同吗


app/global.php
中使用Laravel4.2,有一个默认的错误处理程序设置。你会想删除它来使用你的,或者只是修改它


请查看此以了解更多信息

很难说没有看到您的系统,但我的第一个猜测是,在您的系统之后会有另一个调用
App:error
,它覆盖了您在
App/global.php中尝试执行的操作

我刚刚写了关于拉雷维尔的事。在阅读了那篇文章之后(或者跳过这篇文章,投入其中),我调试这篇文章的方法是跳到

vendor/laravel/framework/src/Illuminate/Exception/Handler.php
并查看
callCustomHandlers
的定义。此方法通过
App:error

protected function callCustomHandlers($exception, $fromConsole = false)
{
    foreach ($this->handlers as $handler)
    {
        //...
    }
}
您的处理程序将位于
$this->handlers
数组中。我将向这个类添加一些临时调试代码(该类可能位于Laravel的单个组合优化文件中),以确定

  • 如果处理程序未通过
    handleexception
    测试

  • 如果队列中添加了另一个处理程序,则“获胜”并发送响应

  • 从一开始就做一件事也没什么坏处

    App::error(function()
    {
        exit(__FILE__);
    });
    

    然后构建错误处理程序,直到停止调用为止。这样你就知道拉威尔有什么问题了

    谢谢,但那似乎不行。。。当然
    QueryException
    扩展了
    Exception
    ?因此,无论如何,它都应该与
    异常
    一起工作。。。是吗?哦,对不起,你说得对。让我改变答案,这也不行。甚至变得偏执,并做了
    清除编译
    优化
    以确保安全。我尝试使用两个错误处理程序(一个用于
    Exception
    ,另一个用于
    QueryException
    ),然后再次仅使用我的
    QueryException
    )。不走运。这可能是因为我的会话存储在数据库中——如果这有什么区别的话。澄清一下——我正在测试数据库崩溃或被删除时会发生什么。我没有主意了。你没有在try-catch块中抛出错误的代码,是吗?我想我今天下午回家后会尝试一下。对,所以我做了一个
    dd($this->handlers)
    来看看里面有什么-但它是一个空数组。。。所以我假设它是在填充
    处理程序
    变量之前抛出错误的?@MikeAnthony这听起来很有可能。尝试调试\u打印\u回溯(包装在预标记中或使用查看->源菜单查看)。这将为您提供错误处理程序的调用堆栈。这是一个相当混乱的转储-不知道如何读取它。我可以看到它列出了例外情况,尽管。。。只是看不到事物的顺序(也不能轻易地美化它)。例外是文件中的第一件事,尽管…@MikeAnthony尝试将其格式化为这样,并将其作为您问题的一部分发布(如果您没有符号,请在符号中添加新行),我花了很长时间才找到覆盖该消息的正确方法。答案如下:
    
    App::error(function()
    {
        exit(__FILE__);
    });