提问人:Homme Sauvage 提问时间:1/29/2013 最后编辑:MykolaHomme Sauvage 更新时间:12/25/2017 访问量:117676
如何在 laravel 4 上显示错误?
How to display errors on laravel 4?
问:
我正在尝试在 Laravel 4 beta 上创建一个应用程序,但我无法调试它,因为它没有显示任何错误,是,是和()。当我尝试在它上执行错误时,它会显示解析错误,但是当我在路由器上执行此操作时,它只显示一个空白页(白屏死机)。我该如何解决这个问题?display_errors
error_reporting
E_ALL
debug => true
config/app.php
public/index.php
谢谢
答:
按照 @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 的问题,因为他得到的是空白屏幕而不是服务器错误。
评论
@Matanya - 您是否查看过服务器日志以了解错误 500 到底是什么?它可以是任意数量的东西
@Aladin - 使用 Laravel 4 可以通过三种方式诊断白屏死机 (WSOD)。
选项 1:转到您的 Laravel 日志 (app/storage/logs),看看其中是否包含错误。
选项 2:转到PHP服务器日志,并查找导致WSOD的PHP错误
选项 3:良好的旧调试技巧 - 在路由文件的开头添加一个 die('hello') 命令 - 然后继续将其越来越深入地移动到您的应用程序中,直到您不再看到“hello”消息。使用它,您将能够缩小导致 WSOD 的线路并解决问题。
评论
https://github.com/loic-sharma/profiler 这是替代 LaRavel3 调试栏的好例子。
安装新的 laravel 实例后,我遇到了白屏问题。我在日志中找不到任何内容,因为(最终我发现)白屏的原因是应用程序/存储不可写。
为了在屏幕上获得错误消息,我在 public/index.php 中添加了以下内容
try {
$app->run();
} catch(\Exception $e) {
echo "<pre>";
echo $e;
echo "</pre>";
}
在那之后,解决问题就很容易了。
评论
转到 应用/配置/app.php
和 设置 'debug' => true,
内部配置文件夹打开app.php
改变
'debug' => false,
自
'debug' => true,
在 Laravel 根文件夹中,将存储目录 chmod 到 777
也许这次不是在 Laravel 4 上,但在 L5.2* 上我遇到了类似的问题:
我只是将目录的所有权更改为:storage/logs
www-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/
继@cw24的回答之后 • 从 Laravel 开始,您将在5.4
public/index.php
try {
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
} catch(\Exception $e) {
echo "<pre>";
echo $e;
echo "</pre>";
}
就我而言,我忘记了启动MySQL。
顺便说一句,这通常在终端中mysql.server start
只需转到您的可用日志即可。转到今天日期时间的文件名,您将在应用程序中找到最新消息。app/storage/logs
error
error
或
打开和更改设置app/config/app.php
'debug' => false,
自
'debug' => true,
或
转到应用程序的文件并更改配置.env
APP_LOG_LEVEL=debug
评论
local
.dev