No supported encrypter found. The cipher and / or key length are invalid. (laravel 5.1)
久しぶりにPHPをさわり、人気があるということなのでlaravelを入れて動かしてみた。早速エラーに出会ったのでメモ。
以下のようにkeyを生成する必要があった。
$ php artisan key:generate
デフォルトの設定だとconfig/app.phpに以下のような設定がなされている。
'key' => env('APP_KEY', 'SomeRandomString'), 'cipher' => 'AES-256-CBC',
APP_KEYという環境変数が設定されていない場合、SomeRandomStringという文字列がkeyに設定される。エラーの出処から追うと、上記のcipherの場合は32bitの文字列である必要があり、この設定のままだとエラーになってしまう。
# vendor/laravel/framework/src/Illuminate/Encryption/Encrypter.php public static function supported($key, $cipher) { $length = mb_strlen($key, '8bit'); return ($cipher === 'AES-128-CBC' && ($length === 16)) || ($cipher === 'AES-256-CBC' && $length === 32); }
php artisan key:generateにより.envに32bitのランダムな文字列がAPP_KEYとして生成され、それが用いられるようになる。