小编Rau*_*aul的帖子

Random RuntimeException:唯一支持的密码是AES-128-CBC和AES-256-CBC,密钥长度正确

我和Laravel 5.3(在Windows服务器上)有同样的问题.我做了所有可能的尝试:检查.env文件,配置,工匠新密钥生成,缓存:清除,配置:清除,编写器更新,但问题随机持续存在.

请注意,具有完全相同版本的apache,mysql,php的相同代码不会在Mac OS上生成此问题.

我发现密钥(加密器约束器的第一个参数)到达"有时"是空的,当然它失败了.大多数情况下密钥是正确的,但随机密钥从EncryptionServiceProvider到达为空,然后再将其询问应用程序配置.

因此,对我有用的唯一解决方案是if ($key)在EncryptionServiceProvider中添加一个,以便不使用空键调用加密构造函数.

当然不是一个"干净"的解决方案,也没有解释问题,但至少避免找到填充错误的日志文件:

RuntimeException:唯一支持的密码是AES-128-CBC和AES-256-CBC,页面显示正确.

如果这是一个我不知道的Laravel bug,但当然如果有人可以解释这一点,我会更乐意知道.

下面是我修改过的类:我if ($key)之前添加了以下行new Encrypter:

class EncryptionServiceProvider extends ServiceProvider
{
    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton('encrypter', function ($app) {
            $config = $app->make('config')->get('app');

            // If the key starts with "base64:", we will need to decode the key before handing
            // it off to the encrypter. Keys may be base-64 encoded for presentation and we …
Run Code Online (Sandbox Code Playgroud)

php laravel

21
推荐指数
2
解决办法
2487
查看次数

标签 统计

laravel ×1

php ×1