如何在 laravel 4 上显示错误?

How to display errors on laravel 4?

提问人:Homme Sauvage 提问时间:1/29/2013 最后编辑:MykolaHomme Sauvage 更新时间:12/25/2017 访问量:117676

问:

我正在尝试在 Laravel 4 beta 上创建一个应用程序,但我无法调试它,因为它没有显示任何错误,是,是和()。当我尝试在它上执行错误时,它会显示解析错误,但是当我在路由器上执行此操作时,它只显示一个空白页(白屏死机)。我该如何解决这个问题?display_errorserror_reportingE_ALLdebug => trueconfig/app.phppublic/index.php

谢谢

调试 Laravel 错误报告 Laravel-4

评论

0赞 Mike Rockétt 1/29/2013
您是否在本地服务器环境中运行?据我所知,Laravel 在将 URL 转换为本地调试环境之前,仍会检查 URL 是否或出现在 URL 中。local.dev
0赞 Mike Rockétt 1/29/2013
哦,你抛出了什么样的错误/异常?你能和我们分享这段代码吗?
0赞 Mike Rockétt 1/29/2013
另请参阅:four.laravel.com/docs/configuration
0赞 Matanya 2/24/2013
我遇到了类似的问题,只是我收到一个通用的 500 服务器错误而不是死机屏幕。错误报告在 L4 中工作正常
0赞 Laurence 2/26/2013
@Matanya - 您是否查看过服务器日志以了解错误 500 到底是什么?它可以是任何数量的东西......

答:

3赞 Matanya 2/26/2013 #1

按照 @The Shift Exchange 的好建议,我查看了error_log,确实设法解决了问题。这只是一个权限问题:

Tue Feb 26 11:22:20 2013] [error] [client 127.0.0.1] PHP Fatal error:  Uncaught exception 'UnexpectedValueException' with message 'The stream or file "/Users/matanya/Sites/indgo/app/start/../storage/logs/log-apache2handler-2013-02-26.txt" could not be opened: failed to open stream: Permission denied' in /Users/matanya/Sites/indgo/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:71\nStack trace:\n#0 /Users/matanya/Sites/indgo/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php(77): Monolog\\Handler\\StreamHandler->write(Array)\n#1 /Users/matanya/Sites/indgo/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\\Handler\\RotatingFileHandler->write(Array)\n#2 /Users/matanya/Sites/indgo/vendor/monolog/monolog/src/Monolog/Logger.php(217): Monolog\\Handler\\AbstractProcessingHandler->handle(Array)\n#3 /Users/matanya/Sites/indgo/vendor/monolog/monolog/src/Monolog/Logger.php(281): Monolog\\Logger->addRecord(400, Object(ErrorException), Array)\n#4 [internal function]: Monolog\\Logger->addError(Object(ErrorException))\n#5 /Users/matanya/Sites/in in /Users/matanya/Sites/indgo/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on line 71

一旦我曾经应用了不那么严格的权限,一切都恢复了正常。chmod

但是,我不确定它是否回答了 OP 的问题,因为他得到的是空白屏幕而不是服务器错误。

评论

0赞 Laurence 2/26/2013
很高兴它有所帮助。我已经发布了一个带有其他一些提示的答案
48赞 Laurence 2/26/2013 #2

@Matanya - 您是否查看过服务器日志以了解错误 500 到底是什么?它可以是任意数量的东西

@Aladin - 使用 Laravel 4 可以通过三种方式诊断白屏死机 (WSOD)。

选项 1:转到您的 Laravel 日志 (app/storage/logs),看看其中是否包含错误。

选项 2:转到PHP服务器日志,并查找导致WSOD的PHP错误

选项 3:良好的旧调试技巧 - 在路由文件的开头添加一个 die('hello') 命令 - 然后继续将其越来越深入地移动到您的应用程序中,直到您不再看到“hello”消息。使用它,您将能够缩小导致 WSOD 的线路并解决问题。

评论

1赞 Jorre 12/30/2013
我忘了在应用程序/存储文件夹上设置权限,即使 laravel 介绍清楚地说明了这一点。谢谢!
0赞 Bruno Rodrigues 5/30/2014
我一直看到 WOSD 在routes.php的第一行中带有 die('hello')。:(
0赞 Bruno Rodrigues 5/30/2014
我在composer.json中添加了一个“files”语句。这是错误...我仍然不知道我做错了什么,但发现了错误。
0赞 Ajay Patel 3/29/2013 #3

https://github.com/loic-sharma/profiler 这是替代 LaRavel3 调试栏的好例子。

38赞 cw24 1/22/2014 #4

安装新的 laravel 实例后,我遇到了白屏问题。我在日志中找不到任何内容,因为(最终我发现)白屏的原因是应用程序/存储不可写。

为了在屏幕上获得错误消息,我在 public/index.php 中添加了以下内容

try {
    $app->run();
} catch(\Exception $e) {
    echo "<pre>";
    echo $e;
    echo "</pre>";
}

在那之后,解决问题就很容易了。

评论

0赞 mesqueeb 4/11/2017
这解决了我的问题。我在这里被链接来自:laracasts.com/discuss/channels/laravel/......
22赞 John Doe 10/23/2014 #5

转到 应用/配置/app.php

和 设置 'debug' => true,

2赞 Hasnat Safder 8/31/2015 #6

内部配置文件夹打开app.php

改变

'debug' => false,

'debug' => true, 
1赞 TheRealJAG 11/12/2016 #7

在 Laravel 根文件夹中,将存储目录 chmod 到 777

1赞 Oluwatobi Samuel Omisakin 1/23/2017 #8

也许这次不是在 Laravel 4 上,但在 L5.2* 上我遇到了类似的问题:

我只是将目录的所有权更改为:storage/logswww-data

# chown -R www-data:www-data logs

PS:这是在 Ubuntu 15 和 Apache 上。

我的目录现在如下所示:logs

drwxrwxr-x  2 www-data   www-data 4096 jaan  23 09:39 logs/
2赞 Grant 4/15/2017 #9

继@cw24的回答之后 • 从 Laravel 开始,您将在5.4public/index.php

try {
    $response = $kernel->handle(
        $request = Illuminate\Http\Request::capture()
    );
} catch(\Exception $e) {
    echo "<pre>";
    echo $e;
    echo "</pre>";
}

就我而言,我忘记了启动MySQL。
顺便说一句,这通常在终端中
mysql.server start

0赞 Rahul Hirve 12/25/2017 #10

只需转到您的可用日志即可。转到今天日期时间的文件名,您将在应用程序中找到最新消息。app/storage/logserrorerror

打开和更改设置app/config/app.php

'debug' => false,

'debug' => true, 

转到应用程序的文件并更改配置.env

APP_LOG_LEVEL=debug