laravel 中加密报错 mcrypt_encrypt(): Module initialization failed

mcrypt_encrypt(): Module initialization failed

mcrypt_encrypt官方文档

那么我们定义好了参数加密的参数

$data = 'hello world uuu';
$cipher = MCRYPT_RIJNDAEL_256;
$key = 'xxxxxx';
$mode = MCRYPT_MODE_CBC;
$iv = $key;
调用代码
$encrypted = mcrypt_encrypt($cipher, $key, $data, $mode, $iv);

那么为了实现封装和保护参数的私密性,我将这些参数写到了laravel框架的.env文件中,然后再config/app.php中加载

ENCRYPT_CIPHER=MCRYPT_RIJNDAEL_256
ENCRYPT_KEY=xxxxxx
ENCRYPT_MODE=MCRYPT_MODE_ECB
报错:

mcrypt_encrypt(): Module initialization failed

解决方案:

mcrypt_encrypt函数中$cipher和$model传入的并不是一个字符串而是一个php原生的常量,然后我写到.env中,加载过来就成了字符串,所以自然就报错了. 所以.env中不能设置CIPHE和MODE常量

mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$encrypt_key,'hello world uuu',MCRYPT_MODE_ECB,$encrypt_iv);