Laravel似乎随机使用默认的database.php配置而不是.env配置

时间:2018-03-09 14:18:58

标签: php laravel

编辑:感谢@ 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文件正在建立,而我的database.php正在使用env(),默认参数为" forge"和#34; localhost"。所以我尝试将此参数更改为" test",接下来的500个错误是相同的,但使用" 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', '')

...

2 个答案:

答案 0 :(得分:1)

尝试

fcm.onNotification().subscribe((data) => {

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

答案 1 :(得分:0)

我讨厌恢复死线程,但是经过一番深思后,我发现问题可能只是php缺乏线程安全性:https://github.com/laravel/framework/issues/28571和此处的出色文章:https://mattallan.me/posts/how-php-environment-variables-actually-work/