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

注意: MCrypt支持依赖的库尚未更新,MCrypt不再被认为是可行或安全的数据encryption方法。 更重要的是,MCrypt已经在PHP 5中被弃用,并且完全在PHP 7中被移除。如果你有任何运行MCrypt的代码,你应该重构它以使用更现代的encryption库。


有没有人知道为什么这个错误消息:( (Call to undefined function mcrypt_encrypt() )显示时,我运行下面的代码?

我错过了一些步骤,也许PHP的任何设置,我必须做这个代码才能工作?

 $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))); 

使用PHP 5.2.8版本的工作是打开php.ini并通过删除php_mcrypt.dll扩展名; ,即改变:

;extension=php_mcrypt.dll extension=php_mcrypt.dll

如果你最近更新到Ubuntu 14.04这里是解决这个问题:

 $ sudo mv /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/ $ sudo php5enmod mcrypt $ sudo service apache2 restart 

对于窗户

 ;extension=php_mcrypt.dll to extension=php_mcrypt.dll then restart your apache server 

对于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 

对于Ubuntu

 sudo apt-get install php5-mcrypt sudo service apache2 restart //if server not reloaded automatically 

如果还不行的话

sudo php5enmod mcrypt && sudo service apache2 restart

您没有安装mcrypt库。

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

如果您在共享主机上,则可以要求您的提供商安装它。


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

 brew install php54-mcrypt --without-homebrew-php 

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

 extension="/usr/local/Cellar/php54-mcrypt/5.4.24/mcrypt.so" 

在Ubuntu下我有这个问题,并解决了它

 $ sudo apt-get install php5-mcrypt $ sudo service apache2 reload 

在Ubuntu 14.10上:

安装模块mcrypt

 sudo apt install php5-mcrypt 

在apache2上启用模块mcrypt

 sudo a2enmod mcrypt 

重新加载模块configuration

 sudo service apache2 restart 

在Linux Mint 17.1 Rebecca – 调用未定义函数mcrypt_create_iv …

通过将以下行添加到php.ini中解决

 extension=mcrypt.so 

之后

 service apache2 restart 

解决了它…

mcrypt是否启用? 您可以使用phpinfo()来查看它是否是。

还有一件事:如果您通过Apache等Web服务器提供PHP,请尝试重新启动Web服务器。 这将“重置”任何可能存在的PHP模块,激活新的configuration。

假设你正在使用debian linux(我正在使用Linux mint 12,问题出在Ubuntu 12.04.1 LTS服务器上)。

我build议服用@dkamins的build议,并确保你已经安装了mcrypt,并在你的php5安装中激活。 使用“sudo apt-get install php5-mcrypt”进行安装。 我的笔记下面。

使用PHP版本PHP Version 5.3.10-1ubuntu3.4 ,如果您PHP Version 5.3.10-1ubuntu3.4 Conde的build议打开phpinfo(),您可以通过在web服务器上创buildtesting文件(例如,创build状态页面testphp.php,内容为“”通过浏览器可以在服务器上访问)

在浏览器中打开状态页时,我发现没有启用或禁用状态。 当我然后打开php.ini文件,由@Anthony Forloney提到,想取消注释;extension=php_mcrypt.dll to extension=php_mcrypt.dll

我来回切换,并重新启动Apache(我正在运行Apache2,你可以重新启动我的设置与sudo /etc/init.d/apache2 restart或当你在那个目录只是sudo restart我相信)与变化和没有改变但都不行。 我拿了@dkamins的build议,去安装包“sudo apt-get安装php5-mcrypt”,然后重新启动Apache如上。 然后我的错误消失了,我的应用程序工作正常。

如果您使用php5-fpm,请记住重新启动它,安装mcrypt后

服务php5-fpm重启

如果你使用ubuntu 14.04,这里是解决这个问题的方法:

首先检查php5-mcryp是否已经安装apt-get install php5-mcrypt

如果安装,只需运行这两个命令或安装并运行这两个命令

 $ sudo php5enmod mcrypt $ sudo service apache2 restart 

我希望这会起作用。

我有同样的问题PHP 7缺lessmcrypt的版本。

这对我有效。

 sudo apt-get update sudo apt-get install mcrypt php7.0-mcrypt sudo apt-get upgrade sudo service apache2 restart (if needed) 

对于基于Linux(Fedora)

 yum -y install php-mcrypt 

通过将“extension = mcrypt.so”添加到PHP.ini来启用该模块。 (/etc/php.ini中)

 systemctl restart httpd.service 

完成!

对我来说,它有助于卸载mcrypt:

 sudo apt-get purge php5-mcrypt 

并简单地重新安装它:

 sudo apt-get install php5-mcrypt 

并不要忘记重新启动Apache如上所述。

不知道为什么和如何在我的情况是如此不同(使用vm提供php55),但也许这将帮助别人。 我也有一些其他模块像xcache这个问题…

检查并安装php5-mcrypt:

 sudo apt-get install php5-mcrypt