PHP7.1 и Laravel 5.3: Функция mcrypt_get_iv_size() устарела
Я использую Laravel 5.0 для всех моих проектов. Вчера я обновил свою версию PHP с 7.0.x до версии 7.1.0. После обновления я попытался открыть проект Laravel и увидел следующее сообщение:
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, потому что это огромный проект, и для обновления потребуется много времени. Слишком много различий между этими двумя версиями. Необходимо изменить количество кодов.
Есть ли более простой способ решить эту проблему?
Ответы
Ответ 1
Эта ошибка возникает из-за того, что у вас, вероятно, есть что-то отличное от AES-256-CBC
как ваш шифр в вашем файле config/app.php
, который зависит от расширения mcrypt. Возможно, вы используете MCRYPT_RIJNDAEL_256
или MCRYPT_RIJNDAEL_128
?
Лучшее, что вы можете сделать без полномасштабного обновления Laravel, - установить устаревший шифр и использовать его для обновления всех ваших зашифрованных данных до используйте шифр AES-256-CBC, который по умолчанию считается шифром по умолчанию с Laravel 5.1. После этого вы сможете использовать PHP 7.1 для своего приложения Laravel.
Ответ 2
В конфигурационном файле config/app.php
вы должны обновить шифр до "AES-256-CBC"
и установить свой ключ в случайную 32-байтную строку, которая может быть надежно сгенерирована с помощью php artisan key:generate
Ответ 3
Добавьте это в начало config/app.php
:
error_reporting(E_ALL ^ E_DEPRECATED);
Источник: fooobar.com/questions/314410/...
Ответ 4
чтобы решить это, просто измените шифр в app.php с 'MCRYPT_RIJNDAEL_128' на 'AES-256-CBC'
Ответ 5
в config/app.php попробуйте изменить MCRYPT_RIJNDAEL_128
на 'AES-256-CBC'