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

nod*_*ect 34 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
Run Code Online (Sandbox Code Playgroud)

我可以知道如何解决这个问题?使用Laravel 5.3解决问题了吗?我不想将我的Laravel更新为5.3,因为它是一个庞大的项目,需要很长时间才能更新.这两个版本之间存在太多差异.需要修改许多代码.

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

Ben*_*ohl 28

出现此错误的原因是AES-256-CBC您的config/app.php文件中除了作为密码之外还有其他内容依赖于mcrypt扩展.也许你正在使用MCRYPT_RIJNDAEL_256MCRYPT_RIJNDAEL_128

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

  • 在 `config/app.php` 中更改 `cipher` 没有帮助:`'cipher' => 'AES-256-CBC',` (2认同)

小智 23

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


Deb*_*sad 18

将其添加到以下的开头config/app.php:

error_reporting(E_ALL ^ E_DEPRECATED);

来源:https://stackoverflow.com/a/42515505/225790

  • 这很好,但只是为了本地开发。在生产中,您需要正确设置所有内容。 (2认同)