注意: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)));
PHP版本5.2.8对我有用的是打开php.ini
并通过删除php_mcrypt.dll
允许;
扩展,即更改:
;extension=php_mcrypt.dll
到extension=php_mcrypt.dll
是否启用了mcrypt?您可以使用phpinfo()
查看是否。
还有一件事:如果您通过Apache等Web服务器提供PHP,请尝试重新启动Web服务器。这将“重置”可能存在的任何PHP模块,从而激活新配置。
假设你正在使用debian linux(我正在使用Linux mint 12,问题出现在Ubuntu 12.04.1 LTS服务器上,我已经进入了。)
我建议接受@dkamins的建议,并确保在php5安装上安装并激活mcrypt。使用“sudo apt-get install php5-mcrypt”进行安装。我的笔记如下。
使用PHP版本PHP Version 5.3.10-1ubuntu3.4
,如果按照@John Conde的建议打开phpinfo(),你可以在web服务器上创建测试文件(例如创建状态页面testphp.php,其中只有内容“”可以通过浏览器在服务器上访问)
在浏览器中打开时,我发现状态页面上没有启用或禁用状态。当我打开@Anthony Forloney提到的php.ini文件时,想要取消注释;extension=php_mcrypt.dll to extension=php_mcrypt.dll
我来回切换并重新启动Apache(我正在运行Apache2,你可以在我的设置中使用sudo /etc/init.d/apache2 restart
重新启动,或者当你在那个目录中只是sudo restart
,我相信)改变而没有改变,但一切都没有。我拿了@dkamins的建议然后用“sudo apt-get install php5-mcrypt”来安装包,然后重新启动apache,如上所述。然后我的错误消失了,我的应用程序工作正常。
如果您使用的是php5-fpm,请记得在安装mcrypt后重新启动它
服务php5-fpm重启
如果你在这里使用ubuntu 14.04是解决这个问题的方法:
首先检查php5-mcrypt已经安装了qazxsw poi
如果已安装,只需运行这两个命令或安装并运行这两个命令
apt-get install php5-mcrypt
我希望它能奏效。
用于基于Linux(Fedora)
$ sudo php5enmod mcrypt
$ sudo service apache2 restart
通过向PHP.ini添加:'extension = mcrypt.so'来启用该模块。 (/etc/php.ini中)
yum -y install php-mcrypt
完成!
对我来说,它有助于卸载mcrypt:
systemctl restart httpd.service
并只需重新安装它:
sudo apt-get purge php5-mcrypt
并且不要忘记如上所述重启apache。
不知道为什么以及如何在我的情况下这是不同的(使用配置了php55的vm),但也许这将有助于其他人。我也遇到过像xcache这样的其他模块的问题......
检查并安装php5-mcrypt:
sudo apt-get install php5-mcrypt
如果你最近更新到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"
如果您使用的是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
然后:
sudo pecl install mcrypt-1.0.1
资料来源:https://www.techrepublic.com/article/how-to-install-mcrypt-for-php-7-2/
在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
重新加载模块配置
sudo service apache2 restart
在Linux Mint上17.1 Rebecca - 调用未定义的函数mcrypt_create_iv ...
通过在php.ini中添加以下行来解决
extension=mcrypt.so
之后一个
service apache2 restart
解决了......
对于缺少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)