Laravel 5 - env local debug true 没有显示错误

Posted

技术标签:

【中文标题】Laravel 5 - env local debug true 没有显示错误【英文标题】:Laravel 5 - env local debug true no errors shown 【发布时间】:2015-01-27 07:46:57 【问题描述】:

我正在尝试为我的应用启用调试,但我似乎没有任何反馈。

环境设置为本地(在 .env 文件中),如果我运行

php artisan env

我明白了

Current application environment: local

我的本​​地环境的调试配置设置为true

return [

    'debug' => true,

另外,如果我在我的主配置文件(config 文件夹中的 app.php)中设置debug = true,我仍然有反馈说代码中有错误。

如果代码有错误,我只有一个空页面(如debug = false)

我错过了什么?

【问题讨论】:

【参考方案1】:

php artisan optimize 如果它仍然不起作用,请删除文件 storage/meta/compiled.php,如 forum topic on Laracasts 中所述

我遇到了同样的问题,artisan 命令解决了问题。

更新

我发现解决存储文件夹相关问题的一个好方法是将 www-data 设置为其所有者。 我正在使用两个命令:

sudo chown $(whoami):www-data . -R

sudo chown www-data: storage -R

从 Laravel 5.1 开始,可能还需要在引导文件夹上执行最后一条命令。

【讨论】:

感谢提示,我发现问题出在存储文件夹的权限上。这很奇怪,因为日志文件(在存储文件夹内)已正确创建并正确更新 - 该文件没有权限错误? - 所以我只是在存储文件夹上 chmod -R 777 ,现在我可以看到错误。我没有运行php artisan optimize,因为我刚刚更新了作曲家(最后与上面的命令做同样的事情),我正在查看你提到的文件夹,但实际上我没有那个文件夹(这就是为什么我考虑权限问题)。谢谢 我发现解决storage 文件夹相关问题的好方法是将www-data 设置为其所有者。我正在使用两个命令,sudo chown $(whoami):www-data . -Rsudo chown www-data: storage -R(从 Laravel 5.1 可能也需要在 bootstrap 文件夹上执行最后一个命令)。【参考方案2】:

我已经在我的主机 (Mac OS X) 上通过 chmod -R 777 storage/ 解决了这个问题。在我的访客机器上 (Ubuntu 14.04) chmod -R 777 storage/ 实际上并没有更改权限。

【讨论】:

郑重声明,设置777权限真的很危险,即使你是在开发环境中。除非您知道自己在做什么,否则请避免。 不要在生产服务器上这样做,只需将 /storage 设置为对 Apache 可用【参考方案3】:

我遇到了一种情况,我有完全相同的症状,一些路线没有提供任何反馈,只是一个白页,日志中没有错误,根本没有信息。

原来,我正在添加一个新的中间件,但我忘记从我的句柄方法中返回 $next($request)。这更令人沮丧,因为这个中间件并不适用于每条路由,所以我假设有一个间歇性错误正在抛出但没有显示在这些路由上。

【讨论】:

【参考方案4】:

如果上述答案对您不起作用,您可能需要检查您可能已更改的配置文件并从那里开始调试。

就我而言,上述解决方案对我不起作用,因为我的问题的根本原因是更改了 config/app.php 文件中的时区(从 laravel 默认的 UTC 我将其更改为 EST5EDT)。出于某种原因,时区设置更改会阻止 laravel 在存储文件夹中记录错误,并且我得到空白屏幕(没有哎呀!错误消息)。我改为将时区更改为 America/New_York,错误日志又开始工作了。

希望这会有所帮助。

【讨论】:

【参考方案5】:

正如 Blair 所说,您可能会在中间件或“Exceptions/Handler.php”中放置一些错误的代码,例如:

if($e->getStatusCode()===404) ...

而不是

if($e instanceof NotFoundHttpException) ...

【讨论】:

【参考方案6】:

对我来说,完美的工作是在 Homestead.yaml 文件中禁用 hhvm,然后我做了 vagrant reload --provision 就是这样!

【讨论】:

【参考方案7】:

即使在 Windows 上也需要这样做:chmod -R 777 storage/ 您可以使用 Git Bash 运行它;

【讨论】:

【参考方案8】:

此外,如果您刚刚安装了 lumen,请确保您已将主应用目录中的 .env.example 重命名为 .env,因为如果您的配置仍命名为环境文件仍命名为 .env.example,它将无法正常工作。

【讨论】:

【参考方案9】:

我实际上通过取消注释 bootstrap/app.php 中的 Dotenv::load(__DIR__.'/../'); 行解决了这个问题。

以便它在编译和缓存之前实际加载它,如果你有 Laravel(不是 Lumen),运行良好的 php artisan optimize 会为你做这件事

但是如果您查看他们的文档,默认情况下它会被注释掉,我认为他们现在可能已经修复了它http://lumen.laravel.com/docs/installation。

【讨论】:

【参考方案10】:

为了完整起见,当错误发生在使用 Model::findOrFail($someId) 的方法中时,我遇到了这个问题。将其替换为 Model::find($someId) 会显示错误日志。

【讨论】:

【参考方案11】:

转到 config/app.php 如果是这样:

'debug' => env('APP_DEBUG', false),

然后改成:

'debug' => env('APP_DEBUG', true),

这个。

【讨论】:

此解决方案更改默认值,而不是读取 ENV 文件。【参考方案12】:

我遇到了同样的问题,所以我检查了异常文件夹的 handler.php 文件,其中注释了具有返回值行的渲染函数,因此页面变为空白。

public function render($request, Exception $exception)
        
    //return parent::render($request, $exception);

【讨论】:

以上是关于Laravel 5 - env local debug true 没有显示错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 phpunit.xml、.env.dusk.local 和 sqlite 内存数据库设置 Laravel 5.4 和 Dusk

如何为 dotenv 获取特定于环境的 .env 文件(在 Laravel 5 中)

如何在 Laravel 5.1 中改变环境?

Laravel 5.3 没有 .env 只有 .env.dev

从 Laravel 中的 .env 返回数据类型

Laravel 5 - env() 总是返回 null