これはLaravelで出たエラーだが、OpenSSLのバージョンが低く、関数がないというのが最初に思いつく原因だと思う。
OpenSSLを更新すれば問題ないが、自分の原因はそこではなかった。
OpenSSLを更新できなければ、以下のように
app/Providers/EncryptionServiceProvider.php
ファイル作成。
<?php
namespace App\Providers;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\ServiceProvider;
class EncryptionServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
if (App::runningUnitTests()) {
return;
}
if (! function_exists('openssl_cipher_iv_length')) {
Config::set('app.cipher', 'AES-256-CBC');
}
}
}
config/app.php
ファイルのproviders
配列に次の行を追加
/*
* Package Service Providers...
*/
App\Providers\EncryptionServiceProvider::class,
この修正により、openssl_cipher_iv_length()
関数が存在しない場合に、暗号化キーの長さを256ビットに設定するようになります。
以上でも解決できない場合、根本的にPHPの拡張機能のOpenSSLを読み込めていない場合がある。
その場合、php.iniの
extension=openssl
extension=ext
これらがコメントアウトされていないことを確認する。
そしてextension=extのときは、絶対パスを指定したほうがいい。
例えば、C:/php/ext のようにすると読み込める。これでphpinfo(); を確認して拡張機能が読み込めていることを確認する。