PHP7.1和Laravel 5.3:不推荐使用函数mcrypt_get_iv_size()

时间:2016-12-08 03:05:21

标签: php laravel

我正在为我的所有项目使用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,因为它是一个庞大的项目,需要很长时间才能更新。这两个版本之间存在太多差异。需要修改很多代码。

有没有更简单的方法来解决这个问题?

4 个答案:

答案 0 :(得分:28)

发生此错误是因为您的AES-256-CBC文件中的密码可能不是config/app.php,而是取决于mcrypt扩展名。也许您使用的是MCRYPT_RIJNDAEL_256MCRYPT_RIJNDAEL_128

如果没有完整的Laravel升级,你可以做的最好的事情是安装legacy encrypter并使用它来更新你所有的加密数据,以使用AES-256-CBC密码,这是自Laravel以来的默认密码5.1,我相信。完成此操作后,您应该可以将PHP 7.1用于Laravel应用程序。

答案 1 :(得分:21)

config/app.php配置文件中,您应该将密码更新为"AES-256-CBC"并将密钥设置为随机32字节字符串,这可以使用{{1}安全生成}}

答案 2 :(得分:19)

Add this to the beginning of the config/app.php:

error_reporting(E_ALL ^ E_DEPRECATED);

Source: https://stackoverflow.com/a/42515505/225790

答案 3 :(得分:1)

解决这个问题只是将app.php中的密码从'MCRYPT_RIJNDAEL_128'更改为'AES-256-CBC'