Я нашел проблему, когда я использую функцию mcrypt_get_iv_size через AppServ .
Я пытаюсь найти тему, которая связана с решением проблемы.
Тем не менее, я пытаюсь загрузить libmcrypt.dll в symtem32 и редактировать php.ini, удалив комментарий с ;extension=php_mcrypt.dll
для extension=php_mcrypt.dll
. Затем перезапустите apache.
К сожалению, после перезагрузки страницы, чтобы увидеть результат после изменения.
Это все еще ошибка, поскольку
Неустранимая ошибка : вызов неопределенной функции mcrypt_get_iv_size () в C: \ AppServ \ www \ folder \ index.php в строке 36
Функция содержит следующее:
class Encryption { var $skey = "SuPerEncKey2010"; // you can change it public function safe_b64encode($string) { $data = base64_encode($string); $data = str_replace(array('+','/','='),array('-','_',''),$data); return $data; } public function safe_b64decode($string) { $data = str_replace(array('-','_'),array('+','/'),$string); $mod4 = strlen($data) % 4; if ($mod4) { $data .= substr('====', $mod4); } return base64_decode($data); } public function encode($value){ if(!$value){return false;} $text = $value; $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, $this->skey, $text, MCRYPT_MODE_ECB, $iv); return trim($this->safe_b64encode($crypttext)); } public function decode($value){ if(!$value){return false;} $crypttext = $this->safe_b64decode($value); $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->skey, $crypttext, MCRYPT_MODE_ECB, $iv); return strtolower(trim($decrypttext)); } }
http://php.net/manual/en/mcrypt.requirements.php
mcrypt уже встроен для PHP 5.3.x для Windows, поэтому вам не нужно устанавливать libmcrypt.dll
на ваш сервер.
Похоже, что расширение php_mcrypt.dll
не загружено.
На Ubuntu, с PHP 5 и Apache, вам нужно запустить:
apt-get install php5-mcrypt php5enmod mcrypt service apache2 restart
Если вы используете PHP 7:
apt install php7.0-mcrypt
Мне пришлось установить библиотеки mcrypt на CentOS 7 x86_64 для вышеупомянутой проблемы.
Вот что я сделал для установки зависимостей php-mcrypt и libmcrypt.
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm rpm -ivh epel-release-7-5.noarch.rpm yum install --enablerepo="epel" php-mcrypt
с пользователем «root» или sudo
с этим не нужно добавлять «расширение = php_mcrypt.dll» в файл php.ini