在 laravel 4 中显示错误

Posted

技术标签:

【中文标题】在 laravel 4 中显示错误【英文标题】:Display errors in laravel 4 【发布时间】:2013-11-24 13:40:31 【问题描述】:

我知道有一个类似的问题:How to display errors on laravel 4?

但我完全不知道如何启用错误显示。我做了什么:

    php.ini 中,我设置了“display_errors = On”、“error_reporting = E_ALL”、“error_log = /var/log/php_errors.log” 在 laravel 的配置 (app.php) - 调试模式 我查看了 /app/storage/logs(无日志) 我查看了 php_errors.log(这里只是一个简单的警告) 在虚拟主机配置中,我指定了 error.log 路径,但此处没有信息

我的代码很简单:

public function getTest() 
    // phpinfo();
    echo $notExistingVar;
    die('123');

我看不到“123”,而是收到 500 错误(在 Chrome 开发工具中查看)

    当我更改某些内容时,我多次尝试“service apache2 restart” 而且我也试过直接在代码中通过ini_set指定设置

好像我错过了一些简单的东西,但我只看到了 WSOD。每时每刻。 非常感谢任何帮助

更新

至少

    ini_set('display_errors', '1');

帮助。不在 php.ini 中,而是在 php 脚本文件本身中

【问题讨论】:

错误 500 几乎意味着任何事情。什么时候会弹出这个错误?你最后改变了什么?服务器错误日志告诉你什么? 如果您收到 500 错误 - 您需要查看您的 apache 日志或更高版本。删除部分代码,直到您进行基本的 Laravel 安装(或从基本安装开始以确保其正常工作)。 错误在我的示例中弹出 $notExistingVar (不存在),我什么也看不到。在实际项目中,我使用了语法错误的 Eloquent 方法。如果我得到正确的apache日志 - 我在虚拟主机中指出的那些? (如 /etc/apache2/sites-available/mysite)。如果属实,则没有任何信息。但我很确定 PHP 应该输出类似“var 不存在”之类的东西,不是吗? 没有。 PHP 自动定义变量,所以在你的情况下 var 只是空的,所以输出将为空白。 好吧,无论如何,当我尝试回显此变量时,或者例如,当我尝试使用不存在的函数时,我仍然会收到 500 错误 【参考方案1】:

终于!

我指定了 App::error 回调并包含 403、404 和 500 个错误页面。我在 403.php 中输入了“403”之类的简单文本,在 404.php 中输入了“404”,但忘记在 500.php 中输入任何内容。我总是在 Chrome 中看到类似“服务器错误”的东西,而不是白页,所以完全忘记了这个回调。

当您指定 App::error 时,您将不会收到调试消息(无论在应用配置中将 debug 设置为 true 还是 false)

【讨论】:

【参考方案2】:

Laravel 禁用 vendor\laravel\framework\src\Illuminate\Foundation\start.php 中的 display_errors

if ($env != 'testing') ini_set('display_errors', 'Off');

这为您提供以下选项之一

    正如你建议的那样,稍后用

    覆盖它
    ini_set('display_errors', 'On');
    

    使用disable_functions directive禁用ini_set

    将Laravel environment 设置为“正在测试”。

【讨论】:

以上是关于在 laravel 4 中显示错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在laravel 4显示错误

使用 Laravel 4 发现 404 错误

如何根据输入请求规则在 laravel 刀片中显示错误消息

连接表时 Laravel 4 SQL 错误

@include 之后刀片未在刀片中显示内容 - Laravel 4.2

Laravel 5.4,AJAX 应该不会出错