致命错误:调用未定义的函数mcrypt_encrypt()

Jin*_*ong 62 php mcrypt

注意: MCrypt支持的库依赖于多年未更新,MCrypt不应再被视为加密数据的可行或安全方法.更重要的是,这个Mcrypt已被弃用,在PHP 5中,而且完全在PHP 7.删除如果您有运行的mcrypt你应该重构它使用更现代化的加密库的任何代码.


有谁知道为什么这个错误信息:(Call to undefined function mcrypt_encrypt() )当我在下面运行以下代码时显示?

我错过了一些步骤,也许在这个代码可以工作之前我必须做的任何设置?

$key = 'password to (en/de)crypt';
$string = 'string to be encrypted';

$test = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key),
            $string, MCRYPT_MODE_CBC, md5(md5($key)));
Run Code Online (Sandbox Code Playgroud)

flo*_*lor 89

如果你最近更新到ubuntu 14.04这里是解决这个问题的方法:

$ sudo mv /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
$ sudo php5enmod mcrypt
$ sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

  • `mcrypt.ini`在我的安装中已经在`/ etc/php5/mods-available /`中,所以我只需要运行php5enmod. (3认同)
  • 我启动了一台新机器并且没有安装mcrypt - 不要忘记确保在此步骤之前使用`$ sudo apt-get install php5-mcrypt`安装mcrypt,然后检查http://askubuntu.com /问题/ 460837/mcrypt的扩展,是缺失,在-14-04-server - 对于MySQL的 (3认同)

Ant*_*ney 34

PHP版本5.2.8对我有用的是打开php.ini并允许php_mcrypt.dll扩展,删除;,即更改:

;extension=php_mcrypt.dllextension=php_mcrypt.dll


Sab*_*bir 28

对于窗户

;extension=php_mcrypt.dll to extension=php_mcrypt.dll 
 then restart your apache server
Run Code Online (Sandbox Code Playgroud)

对于Redhat

sudo yum install php55-mcrypt //if php5.5
sudo yum install php-mcrypt //if less than 5.4
sudo service httpd restart //if apache 2.4
sudo /etc/init.d/httpd restart //if apache 2.2 or less
Run Code Online (Sandbox Code Playgroud)

对于Ubuntu

sudo apt-get install php5-mcrypt
sudo service apache2 restart //if server not reloaded automatically 
Run Code Online (Sandbox Code Playgroud)

还是行不通?

sudo php5enmod mcrypt && sudo service apache2 restart


dka*_*ins 19

您没有安装mcrypt库.

有关更多信息,请参见http://www.php.net/manual/en/mcrypt.setup.php.

如果您使用的是共享主机,则可以要求您的提供商进行安装.


在OSX中,您可以通过自制软件轻松安装mcrypt

brew install php54-mcrypt --without-homebrew-php
Run Code Online (Sandbox Code Playgroud)

然后将此行添加到/etc/php.ini.

extension="/usr/local/Cellar/php54-mcrypt/5.4.24/mcrypt.so"
Run Code Online (Sandbox Code Playgroud)


Fab*_*men 15

如果您使用的是PHP 7.2或更高版本:

此函数在PHP 7.1.0中已弃用,在PHP 7.2.0中已被删除.

来源:http://php.net/manual/en/function.mcrypt-encrypt.php

所以你必须更换php代码并找到没有mcrypt的解决方案.

或者,我刚刚发现,您仍然可以在PHP 7.2.0中使用mcrypt,但您必须将其安装为PHP扩展社区库.(https://pecl.php.net/)

在Debian/Ubuntu Linux上发布:

sudo apt-get -y install gcc make autoconf libc-dev pkg-config
sudo apt-get -y install php7.2-dev
sudo apt-get -y install libmcrypt-dev
Run Code Online (Sandbox Code Playgroud)

然后:

sudo pecl install mcrypt-1.0.1
Run Code Online (Sandbox Code Playgroud)

资料来源:https://www.techrepublic.com/article/how-to-install-mcrypt-for-php-7-2/


Pie*_*NAY 11

在Ubuntu下我遇到了问题并解决了它

$ sudo apt-get install php5-mcrypt
$ sudo service apache2 reload
Run Code Online (Sandbox Code Playgroud)


alp*_*yax 7

在ubuntu 14.10上:

安装模块mcrypt

sudo apt install php5-mcrypt
Run Code Online (Sandbox Code Playgroud)

在apache2上启用模块mcrypt

sudo a2enmod mcrypt
Run Code Online (Sandbox Code Playgroud)

重新加载模块配置

sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

  • 我想你的意思是:`sudo php5enmod mcrypt` (3认同)

小智 5

在Linux Mint上17.1 Rebecca - 调用未定义的函数mcrypt_create_iv ...

通过在php.ini中添加以下行来解决

extension=mcrypt.so
Run Code Online (Sandbox Code Playgroud)

之后一个

service apache2 restart
Run Code Online (Sandbox Code Playgroud)

解决了......


小智 5

对于缺少 mcrypt 的PHP 7版本,我遇到了同样的问题。

这对我有用。

sudo apt-get update
sudo apt-get install mcrypt php7.0-mcrypt
sudo apt-get upgrade
sudo service apache2 restart (if needed)
Run Code Online (Sandbox Code Playgroud)