Laravel:“php artisan cache:clear”的数据库密码错误

问题描述 投票:0回答:1

PHP 8.3,Laravel 11

php artisan cache:clear
在本地开发计算机上工作,但在登台和生产服务器上失败并显示:

In Connection.php line 825:
                                                                                           
  SQLSTATE[08006] [7] connection to server at "127.0.0.1", port 5432 failed: fe_sendauth:  
   no password supplied (Connection: pgsql, SQL: delete from "cache")                      

In Connector.php line 66:
                                                                                           
  SQLSTATE[08006] [7] connection to server at "127.0.0.1", port 5432 failed: fe_sendauth:  
   no password supplied

.env
文件中,
CACHE_STORE
本来是
database
,但是设置
CACHE_STORE=redis
后又出现同样的错误。数据库和缓存都设置了密码,并且在应用程序中运行良好。配置未缓存。不涉及 Docker。所有其他 Artisan 缓存/清除命令都可以正常工作。

为什么它不使用

DB_PASSWORD
中的
.env
,为什么它在
CACHE_STORE=redis
时访问数据库?

尝试过:

  • sudo php artisan cache:clear

  • php artisan config:clear

  • service nginx restart

  • service php-fpm restart

  • reboot

./config/cache.php
'database'
引用
DB_CACHE_CONNECTION
等没有默认值,所以我在
.env
中设置以下内容:

DB_CACHE_CONNECTION=pgsql
DB_CACHE_LOCK_CONNECTION=pgsql
DB_CACHE_LOCK_TABLE=cache_locks

同样的错误。

生产环境和本地设置之间肯定有区别,但我想不出来。

从哪里开始调试?

php laravel caching
1个回答
0
投票

这是一个文件权限问题。控制台用户没有

.env
文件的读取权限,但读取时没有错误。

我一直尽可能严格地设置权限,并在每次出现问题时放松它们......不幸的是,这次花了太长时间才意识到这是一个权限问题。

© www.soinside.com 2019 - 2024. All rights reserved.