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 . -R
和 sudo 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 中)