32

我正在尝试在 Laravel 4 beta 上创建一个应用程序,但我无法调试它,因为它没有显示任何错误、display_errors开启、error_reportingisE_ALLdebug => true( config/app.php)。当我尝试对其执行错误时,public/index.php会显示解析错误,但是当我在路由器上执行此操作时,它只会显示一个空白页面(白屏死机)。我怎样才能解决这个问题?

谢谢

4

10 回答 10

48

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

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

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

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

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

于 2013-02-26T14:22:54.143 回答
37

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

为了在屏幕上显示错误消息,我将以下内容添加到 public/index.php

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

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

于 2014-01-22T15:09:52.767 回答
22

转到 app/config/app.php

并设置'debug' => true,

于 2014-10-23T14:24:37.847 回答
3

遵循@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 的问题,因为他得到的是一个空白屏幕而不是服务器错误。

于 2013-02-26T09:47:07.653 回答
3

里面的配置文件夹打开app.php

改变

'debug' => false,

'debug' => true, 
于 2015-08-31T13:39:08.060 回答
2

继@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在终端

于 2017-04-15T00:24:34.287 回答
1

在 Laravel 根文件夹 chmod 存储目录为 777

于 2016-11-12T05:02:50.040 回答
1

这次可能不在 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/
于 2017-01-23T09:52:42.207 回答
0

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

于 2013-03-28T17:10:25.513 回答
0

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

或者

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

'debug' => false,

'debug' => true, 

或者

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

APP_LOG_LEVEL=debug
于 2017-12-25T02:40:07.783 回答