2016-12-08 4 views
18

私はすべてのプロジェクトでLaravel 5.0を使用しています。昨日、PHPバージョンを7.0.xからバージョン7.1.0に更新しました。更新されたら、Laravelプロジェクトを開こうとしましたが、このメッセージは次のとおりです。PHP7.1とLaravel 5.3:関数mcrypt_get_iv_size()は非推奨です

ErrorException in Encrypter.php line 303: 
Function mcrypt_get_iv_size() is deprecated 

in Encrypter.php line 303 
at HandleExceptions->handleError('8192', 'Function mcrypt_get_iv_size() is deprecated', 'C:\wamp64\www\project1\vendor\laravel\framework\src\Illuminate\Encryption\Encrypter.php', '303', array()) in Encrypter.php line 303 

私はこれをどのように解決できますか? Laravel 5.3を使用して問題を解決していますか?私はLaravelを5.3にアップデートする気がしません。なぜなら、それは巨大なプロジェクトであり、更新には長い時間がかかるからです。これらの2つのバージョンの違いは多すぎます。たくさんのコードを変更する必要があります。

この問題を解決する簡単な方法はありますか?

+0

'openssl_cipher_iv_length'を使用できませんか? – Irvin

+0

mcryptを使用しないことをお勧めします。これはabandonwareです。何年も更新されておらず、標準PKCS#7(néePKCS#5)パディングもサポートしていません。データ。 mcryptには、2003年にさかのぼる多くの傑出したバグ(https://sourceforge.net/p/mcrypt/bugs/)があります。PHP 7.2では廃止予定のmcrypt拡張機能は削除されます。代わりに[defuse](https://github.com/defuse/php-encryption)または[RNCryptor](https://github.com/RNCryptor)を使用することを検討してください。これらは完全な解決策を提供し、維持され、正しいものです。 – zaph

答えて

21

このエラーは、config/app.phpファイルの暗号として、おそらくAES-256-CBC以外のものがmcrypt拡張機能に依存しているために発生します。おそらくMCRYPT_RIJNDAEL_256またはMCRYPT_RIJNDAEL_128を使用していますか?

本格的なLaravelアップグレードなしでできることは、legacy encrypterをインストールして、Laravel 5.1以降のデフォルト暗号であるAES-256-CBC暗号を使用するようにすべての暗号化データを更新することです信じる。一度これを行うと、LaravelアプリケーションにPHP 7.1を使用できるようになります。

+0

'config/app.php'の' cipher'を変更しても意味がありません。 '' cipher '=>' AES-256-CBC '、 ' – Debiprasad

+0

暗号の変更はプロセスの一部に過ぎません。その暗号を使用すると、アプリケーション内の他のものがmcryptを使用していない限り、mcryptエラーを確実に停止するはずです。 –

15

あなたconfig/app.php設定ファイルでは、"AES-256-CBC"に暗号を更新し、しっかりconfig/app.phpの先頭にこれを追加php artisan key:generate

+0

私のために働いた。私はphp artisan key:generateを使用してキーを再生成しなければなりませんでした。私はキーを再生成せずに試しましたが、うまくいきませんでした。その後、それはしました。 – zvineyard

0

これを解決するには、app.phpの暗号を 'MCRYPT_RIJNDAEL_128'から 'AES-256-CBC'に変更してください。

関連する問題