我正在为我的所有项目使用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,因为它是一个庞大的项目,需要很长时间才能更新。这两个版本之间存在太多差异。需要修改很多代码。
有没有更简单的方法来解决这个问题?
答案 0 :(得分:28)
发生此错误是因为您的AES-256-CBC
文件中的密码可能不是config/app.php
,而是取决于mcrypt扩展名。也许您使用的是MCRYPT_RIJNDAEL_256
或MCRYPT_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);
答案 3 :(得分:1)
解决这个问题只是将app.php中的密码从'MCRYPT_RIJNDAEL_128'更改为'AES-256-CBC'