Laravel 10升级后.env加密报错及.env.encrypted使用咨询
Laravel 10 环境加密问题解决
错误原因
你之前在Laravel 7用的是第三方包的env-encrypt命令,生成的OUT:加密字符串是该包的自定义加密标识,但Laravel 10内置的环境加密系统不兼容这个格式。框架读取数据库配置时,把未解密的加密串直接当成了数据库用户名(UID),所以触发了这个错误。
核心问题解答:不需要删除.env文件
Laravel读取环境配置的优先级是:.env文件 > .env.encrypted文件。如果.env存在,框架会优先读取它的内容,不会自动切换到.env.encrypted。
正确处理步骤
- 先恢复
.env的明文配置:
用你之前Laravel 7使用的加密包的解密命令(比如php artisan env-decrypt),把所有带OUT:前缀的字段还原成明文,确保数据库配置(DB_USERNAME、DB_PASSWORD等)都是正确的明文值。 - 切换到Laravel 10官方加密流程:
- 确认
APP_KEY已设置(未设置则执行php artisan key:generate) - 执行官方加密命令:
php artisan env:encrypt,执行后会生成.env.encrypted文件,同时输出一个解密密钥,务必保存好这个密钥(丢失后无法解密配置) - 若要测试加密配置,可将
.env重命名为.env.backup,然后设置环境变量LARAVEL_ENV_ENCRYPTION_KEY为刚才生成的解密密钥,框架就会自动读取并解密.env.encrypted
- 确认
内容的提问来源于stack exchange,提问作者sql query
相关产品推荐
相关产品推荐

