mcrypt_encrypt(): Mcrypt 初始化失败
mcrypt_encrypt(): Mcrypt initialisation failed
我下载了示例 Laravel 5 项目并尝试在我的本地机器上进行测试。但
我可以看到如下错误:
User.php 第 115 行出现错误异常:
mcrypt_encrypt(): Mcrypt 初始化失败
1. in User.php line 115
2. at HandleExceptions->handleError('4096', 'mcrypt_encrypt(): Mcrypt initialisation failed', 'C:\wamp\www\noj\app\Models\User.php', '115', array('pure_string' => 'asdfasdf', 'USER_PASSWORD_SALT' => null, 'key' => '', 'iv_size' => '8', 'iv' => 'ЎZo\S '))
3. at mcrypt_encrypt('blowfish', '', 'asdfasdf', 'ecb', 'ЎZo\S ') in User.php line 115
4. at User::encrypthash('asdfasdf') in Registrar.php line 36
5. at Registrar->create(array('_token' => '7oIiiOAtUu4Quc949u7SmtcDlI5a0zo0AEJgBA3S', 'name' => 'Bob', 'email' => 'bob@example.com', 'password' => 'asdfasdf', 'password_confirmation' => 'asdfasdf')) in AuthenticatesAndRegistersUsers.php line 50
6. at AuthController->postRegister(object(Request))</li>
...
User.php
...
108. public static function encrypthash($pure_string) {
109. //xulianwhocreatenoj
110. $USER_PASSWORD_SALT = env('USER_PASSWORD_SALT');
111. $key = pack('H*', $USER_PASSWORD_SALT);
112. $pure_string = trim($pure_string);
113. $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CBC);
114. $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
115. $encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, utf8_encode($pure_string), MCRYPT_MODE_ECB, $iv);
116. return base64_encode($encrypted_string);
117. }
...
我对 PHP 和 mcrypt_encrypt() 函数的了解不深。
请帮我摆脱这个。
运行 php artisan key:generate
在你的命令行(它应该位于你的 Laravel 项目根目录)来刷新你的应用程序密钥。
然后清除缓存和会话并重试。
第 115 行的问题是您的加密密钥只是一个空字符串。
$key
是空的,因为有两行,你有:
$USER_PASSWORD_SALT = env('USER_PASSWORD_SALT');
问题是 env('USER_PASSWORD_SALT')
是空的,所以没有盐。如果你解决了这个问题,你的功能就会起作用。
我下载了示例 Laravel 5 项目并尝试在我的本地机器上进行测试。但 我可以看到如下错误:
User.php 第 115 行出现错误异常:
mcrypt_encrypt(): Mcrypt 初始化失败
1. in User.php line 115
2. at HandleExceptions->handleError('4096', 'mcrypt_encrypt(): Mcrypt initialisation failed', 'C:\wamp\www\noj\app\Models\User.php', '115', array('pure_string' => 'asdfasdf', 'USER_PASSWORD_SALT' => null, 'key' => '', 'iv_size' => '8', 'iv' => 'ЎZo\S '))
3. at mcrypt_encrypt('blowfish', '', 'asdfasdf', 'ecb', 'ЎZo\S ') in User.php line 115
4. at User::encrypthash('asdfasdf') in Registrar.php line 36
5. at Registrar->create(array('_token' => '7oIiiOAtUu4Quc949u7SmtcDlI5a0zo0AEJgBA3S', 'name' => 'Bob', 'email' => 'bob@example.com', 'password' => 'asdfasdf', 'password_confirmation' => 'asdfasdf')) in AuthenticatesAndRegistersUsers.php line 50
6. at AuthController->postRegister(object(Request))</li>
...
User.php
...
108. public static function encrypthash($pure_string) {
109. //xulianwhocreatenoj
110. $USER_PASSWORD_SALT = env('USER_PASSWORD_SALT');
111. $key = pack('H*', $USER_PASSWORD_SALT);
112. $pure_string = trim($pure_string);
113. $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CBC);
114. $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
115. $encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, utf8_encode($pure_string), MCRYPT_MODE_ECB, $iv);
116. return base64_encode($encrypted_string);
117. }
...
我对 PHP 和 mcrypt_encrypt() 函数的了解不深。 请帮我摆脱这个。
运行 php artisan key:generate
在你的命令行(它应该位于你的 Laravel 项目根目录)来刷新你的应用程序密钥。
然后清除缓存和会话并重试。
第 115 行的问题是您的加密密钥只是一个空字符串。
$key
是空的,因为有两行,你有:
$USER_PASSWORD_SALT = env('USER_PASSWORD_SALT');
问题是 env('USER_PASSWORD_SALT')
是空的,所以没有盐。如果你解决了这个问题,你的功能就会起作用。