The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths.

本文介绍了在初始化Laravel项目时遇到的加密算法错误提示问题,并提供了解决方案:通过在PHPStorm环境中运行php artisan key:generate命令来生成正确的密钥。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初始化一个Laravel项目,在浏览器访问时提示:

The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths.

这里写图片描述

解决办法:
在PHPStorm中运行php artisan key:generate 就可以了

php artisan key:generate
Application key [base64:DWC4BjwNBAM12VuaTWSKx00VQI9trY/8fled08vrM7A=] set successfully.
<think>好的,我需要帮助用户解决Laravel中的RuntimeException,具体错误是加密算法不支持的问题。首先,我得回忆一下Laravel的加密机制。用户提到的错误信息指出只支持AES-128-CBCAES-256-CBC,并且密钥长度要正确。这可能是因为在配置文件中使用了不支持的加密算法,或者密钥生成有问题。 接下来,我需要查阅用户提供的引用内容。引用[1]和[2]提到同样的错误,引用[3]给出的解决方法是运行php artisan key:generate。这说明用户可能没有正确生成应用密钥,导致密钥长度不符合要求。Laravel的加密器依赖于APP_KEY这个环境变量,如果密钥长度不对,比如使用旧版本或手动修改了密钥,就会触发这个错误。 然后,我要考虑常见的解决步骤。首先,检查.env文件中的APP_KEY是否存在且正确。如果不存在或格式不对,运行php artisan key:generate会自动生成一个合适的密钥,并更新.env文件。此外,还要确认config/app.php中的配置,确保'cipher'选项是AES-256-CBCAES-128-CBC,默认应该是前者。如果用户不小心修改了这个配置,比如改成了其他算法,就会导致错误。 另外,可能需要检查服务器环境,比如PHP的OpenSSL扩展是否安装,因为Laravel的加密依赖于它。如果扩展未启用,也可能引发问题,但错误信息会更广泛,所以这里可能不是主要原因。不过还是应该提醒用户检查这一点。 还有,用户可能在升级Laravel版本时遇到这个问题,因为不同版本可能有不同的默认配置。比如,旧项目升级到新版本时,如果原来的cipher设置被弃用,就需要更新配置。这时候需要对照官方升级指南,调整cipher设置。 最后,应该建议用户清除配置缓存,因为有时候配置被缓存后,修改.env或config文件可能不会立即生效。使用php artisan config:clear可以解决这个问题。 总结解决步骤应该是:1.生成新密钥;2.检查cipher配置;3.确保环境变量正确加载;4.清除配置缓存。同时要提醒用户备份现有.env文件,防止意外覆盖重要数据。</think>### Laravel 加密算法不支持的解决方法 当 Laravel 出现错误提示 `RuntimeException: The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths.` 时,通常是因为加密配置或密钥不符合要求。以下是逐步解决方案: --- #### **1. 生成新的应用密钥** Laravel 要求 `APP_KEY` 必须与所选加密算法(如 AES-256-CBC)的密钥长度匹配。若密钥未正确生成或缺失,会导致此错误。 **解决方法**: - 在项目根目录下运行命令生成新密钥: ```bash php artisan key:generate ``` 此命令会自动更新 `.env` 文件中的 `APP_KEY`[^3]。 --- #### **2. 检查加密算法配置** Laravel 默认使用 `AES-256-CBC`,若手动修改为不支持的算法(如 `AES-128-GCM`),则会报错。 **解决方法**: - 打开 `config/app.php`,确认 `cipher` 配置为以下两种之一: ```php 'cipher' => 'AES-256-CBC', // 默认推荐 // 或 'cipher' => 'AES-128-CBC' ``` --- #### **3. 验证密钥长度** - **AES-256-CBC**:密钥需为 32 字符(32 bytes)。 - **AES-128-CBC**:密钥需为 16 字符(16 bytes)。 检查 `.env` 中的 `APP_KEY` 是否符合长度要求。例如: ```env APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= ``` --- #### **4. 清除配置缓存** 若修改配置后未生效,可能是缓存未更新: ```bash php artisan config:clear ``` --- #### **5. 检查服务器环境** 确保服务器已安装 OpenSSL 扩展(Laravel 加密依赖此扩展): - 在 PHP 配置文件中(如 `php.ini`)确认 `extension=openssl` 已启用。 --- #### **总结流程** ```bash # 生成新密钥 → 更新配置 → 清除缓存 php artisan key:generate php artisan config:clear ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值