【问题标题】:How to display errors on laravel 4?如何在 laravel 4 上显示错误?
【发布时间】:2013-01-12 04:03:00
【问题描述】:

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

谢谢

【问题讨论】:

  • 您是否在本地服务器环境中运行?据我所知,Laravel 在将其转换为本地调试环境之前,仍然会检查 URL 中是否出现 local.dev
  • 哦,你抛出了什么样的错误/异常?你能和我们分享那段代码吗?
  • 我遇到了类似的问题,只是我得到一个通用的 500 服务器错误而不是死屏。错误报告在 L4 之外工作正常
  • @Matanya - 您是否查看了服务器日志以了解错误 500 实际上是什么?它可以是任意数量的东西......

标签: debugging laravel error-reporting laravel-4


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 我忘了设置 app/storage 文件夹的权限,尽管 laravel 介绍清楚地说明了这一点。谢谢!
  • 我一直在 routes.php 的第一行看到带有 die('hello') 的 WOSD .. :(
  • 我在 composer.json 中添加了一个“文件”语句。这是错误...我仍然不知道我做错了什么,但发现了错误。
【解决方案2】:

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

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

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

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

【讨论】:

【解决方案3】:

转到 应用程序/配置/app.php

和 设置“调试”=> 真,

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 很高兴它有帮助。我已经发布了一些其他提示的答案
    【解决方案5】:

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

    改变

    'debug' => false,
    

    'debug' => true, 
    

    【讨论】:

      【解决方案6】:

      除了@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

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

          这次可能不在 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/
          

          【讨论】:

            【解决方案9】:

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

            【讨论】:

              【解决方案10】:

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

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

              'debug' => false,
              

              'debug' => true, 
              

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

              APP_LOG_LEVEL=debug
              

              【讨论】:

                猜你喜欢
                • 2013-11-24
                • 1970-01-01
                • 1970-01-01
                • 2021-10-19
                • 2019-03-08
                • 2020-03-05
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多