OctoberCMS openssl_encrypt()期望参数1为字符串,给定数组

时间:2018-08-13 15:31:13

标签: octobercms

我使用composer create-project october/october安装了最新版本的OctoberCMS,每次登录时都会出现以下错误:

openssl_encrypt() expects parameter 1 to be string, array given \
/home/.../vendor/laravel/framework/src/Illuminate/Encryption/Encrypter.php line 91

正是框架的这一部分,会导致错误:

    $value = \openssl_encrypt(
        $serialize ? serialize($value) : $value,
        $this->cipher, $this->key, 0, $iv
    );

版本437没问题,因此我认为它不是缺少的PHP模块(OpenSSL支持在PHP中编译)。有没有人遇到相同的问题并且知道如何解决?

2 个答案:

答案 0 :(得分:1)

在GitHub上有一个open issue。只需将composer.json文件上的Laravel版本降级为5.5.41,然后执行php artisan cache:clear并删除您的网站cookie。

答案 1 :(得分:0)

<?php namespace October\Rain\Cookie\Middleware;

use Config;
use Illuminate\Contracts\Encryption\Encrypter as EncrypterContract;

class EncryptCookies extends \Illuminate\Cookie\Middleware\EncryptCookies
{
    /**
     * Indicates if cookies should be serialized.
     *
     * @var bool
     */
    protected static $serialize = true;

    public function __construct(EncrypterContract $encrypter)
    {
        parent::__construct($encrypter);
        $except = Config::get('cookie.unencryptedCookies', []);
        $this->disableFor($except);
    }
}

用上面的代码替换vendor / october / rain / src / Cookie / Middleware / EncryptCookies.php