Laravel似乎随机使用默认的database.php配置而非.env文件中的配置。

3

编辑:感谢@PedroFaria99,清除配置缓存解决了问题,但如果有人想解释随机性方面,请随意。

我的laravel 5.5本地安装出了问题(生产环境没有受到影响)。这里Laravel被用作API并为客户端VueJS应用程序提供服务。

有时候(随机的),我的laravel会向客户端返回500错误。它可能发生在各种路由上,从1到10个连续的HTTP请求后或没有,在检查存储时

[2018-03-09 13:44:08] production.ERROR: PDOException: SQLSTATE[HY000] [1045] Access Denied for user: 'forge'@'@localhost' (password: NO) in [...] Illuminate\Database\Connectors\Connector.php:119

然而,我的.env文件已经设置好了,我使用env()函数在database.php中设置了默认参数为"forge"和"localhost"。因此,我尝试将这个参数更改为"test",然后下一个500错误与"forge"相同,但是变成了"test"。
我非常困惑,因为这个错误不是系统性的。
.env 文件
APP_ENV=local
APP_DEBUG=true
DB_HOST=localhost
DB_DATABASE=mydatabase
DB_USERNAME=root
DB_PASSWORD=

database.php

...
'default' => env('DB_CONNECTION', 'mysql'),

...    
'connections' => [
        'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'test'),
            'username'  => env('DB_USERNAME', 'test'),
            'password'  => env('DB_PASSWORD', '')

...


1
尝试运行 php artisan key:generate 看看是否解决问题,如果不行,您可能需要清除配置缓存。 - PedroFaria99
没有考虑过,因为那是随机的。清除配置缓存似乎起作用了。谢谢!但是对于它相当随机的事实有什么想法吗? - Ekushisu
不是真的,似乎有时服务器会出现问题,不确定。 - PedroFaria99
我认为你需要将其缓存,因为它几乎更新了文件./project/bootstrap/chache/config.php,该文件似乎保存着缓存值。我相信它起到了备份的作用,在laravel在加载其余的自动加载文件之前没有完全加载.env文件的情况下发挥作用。 - Sérgio Reis
1
我遇到了同样的问题,最后我在两个文件中都放置了相同的配置,问题(显然)消失了。 - Motassem Kassab
2个回答

1
尝试
php artisan cache:clear
php artisan config:cache

这是因为Laravel将env值保存在其缓存中,如果您的配置未被缓存,它将采用保存在database.php文件中的配置。您无法直接在运行时访问env值。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接