我已经将 laravel 5.3 升级到 laravel 5.5,我正在使用 php 7.1.11
升级时出现错误
ErrorException (E_ERROR) 函数 mcrypt_get_iv_size() 已弃用
在 config\app
我有
'cipher' => 'AES-256-CBC'
也尝试添加
error_reporting(E_ALL ^ E_DEPRECATED);
但仍然出错。
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, self::$skey, $text, MCRYPT_MODE_ECB, $iv);
这是我正在使用的代码。
最佳答案
Laravel 已经删除了 5.3 中的所有 mcrypt 代码(自 Laravel 5.1 以来默认情况下不使用它)所以我假设这是 OP 自己的代码。
理想情况下,这段代码应该迁移到 OpenSSL,但在此之前它可以像这样包装:
$olderrorReporting = error_reporting();
error_reporting($olderrorReporting&(~E_DEPRECATED));
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, self::$skey, $text, MCRYPT_MODE_ECB, $iv);
error_reporting($olderrorReporting)
上述解决方案通常可用于“抑制”已弃用的警告。
旁注:$a ^ $b
在 PHP 中是 XOR 所以 error_reporting(E_ALL ^ E_DEPRECATED)
基本上等同于 error_reporting(E_ALL)
关于php - 功能 mcrypt_get_iv_size() 在 Laravel 5.5 和 php 7.1.11 上被弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47324443/