致命错误:调用未定义函数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