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
同样的错误。
生产环境和本地设置之间肯定有区别,但我想不出来。
从哪里开始调试?
这是一个文件权限问题。控制台用户没有
.env
文件的读取权限,但读取时没有错误。
我一直尽可能严格地设置权限,并在每次出现问题时放松它们......不幸的是,这次花了太长时间才意识到这是一个权限问题。