注意: MCrypt支持依赖的库未在多年内更新,MCrypt不应再被视为加密数据的可行或安全方法。更重要的是,MCrypt在PHP 5中被弃用,并在PHP 7中完全删除。如果你有任何代码运行MCrypt,你应该重构它以使用更现代的加密库。
当我在下面运行以下代码时,是否有人知道为什么会出现此错误消息:(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)));
答案 0 :(得分:89)
如果您最近更新到ubuntu 14.04,则可以解决此问题:
$ sudo mv /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
$ sudo php5enmod mcrypt
$ sudo service apache2 restart
答案 1 :(得分:33)
PHP版本5.2.8对我有用的是打开php.ini
并通过删除php_mcrypt.dll
允许;
扩展,即更改:
;extension=php_mcrypt.dll
至extension=php_mcrypt.dll
答案 2 :(得分:28)
对于Windows
;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
答案 3 :(得分:18)
您没有安装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"
答案 4 :(得分:11)
如果您使用的是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/
答案 5 :(得分:11)
在Ubuntu下我遇到了问题并用
解决了$ sudo apt-get install php5-mcrypt
$ sudo service apache2 reload
答案 6 :(得分:7)
在ubuntu 14.10上:
安装模块mcrypt
sudo apt install php5-mcrypt
在apache2上启用模块mcrypt
sudo a2enmod mcrypt
重新加载模块配置
sudo service apache2 restart
答案 7 :(得分:5)
On Linux Mint 17.1 Rebecca - 调用未定义的函数mcrypt_create_iv ...
通过将以下行添加到php.ini
来解决extension=mcrypt.so
之后
service apache2 restart
解决了......
答案 8 :(得分:4)
对于缺少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)
答案 9 :(得分:3)
假设您正在使用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
在我的设置中重新启动,或者当您在{0. 1}}那个目录中时,我相信
变化,没有变化,但一切都没有。我拿了@dkamins的建议然后用“sudo apt-get install php5-mcrypt”来安装包,然后重新启动apache,如上所述。然后我的错误消失了,我的申请工作正常。
答案 10 :(得分:3)
是否启用了mcrypt?您可以使用phpinfo()
查看是否。
答案 11 :(得分:3)
如果您使用的是php5-fpm,请在安装mcrypt
后重新启动它service php5-fpm restart
答案 12 :(得分:3)
如果你在这里使用ubuntu 14.04是解决这个问题的方法:
首先检查php5-mcryp是否已安装apt-get install php5-mcrypt
如果已安装,只需运行这两个命令或安装并运行这两个命令
$ sudo php5enmod mcrypt
$ sudo service apache2 restart
我希望它能奏效。
答案 13 :(得分:3)
还有一件事:如果您通过Apache等Web服务器提供PHP,请尝试重新启动Web服务器。这将“重置”可能存在的任何PHP模块,激活新配置。
答案 14 :(得分:1)
基于Linux(Fedora)
yum -y install php-mcrypt
通过添加以下内容启用该模块:' extension = mcrypt.so'到PHP.ini。 (/etc/php.ini中)
systemctl restart httpd.service
完成!
答案 15 :(得分:1)
对我来说,它有助于卸载mcrypt:
sudo apt-get purge php5-mcrypt
然后只需重新安装:
sudo apt-get install php5-mcrypt
并且不要忘记如上所述重启apache。
不知道为什么以及在我的情况下这是不同的(使用带有配置的php55的vm),但也许这会帮助其他人。我也遇到了一些其他模块的问题,比如xcache ......
答案 16 :(得分:1)
在Ubuntu 18.04和php7.0中
$ sudo apt-get install php7.0-mcrypt
$ sudo systemctl reload apache2
答案 17 :(得分:0)
检查并安装php5-mcrypt:
sudo apt-get install php5-mcrypt
答案 18 :(得分:0)
我的环境:Windows 10,Xampp控制面板v3.2.4,PHP 7.3.2
步骤1:从此处下载适合您系统的版本:https://pecl.php.net/package/mcrypt/1.0.3/windows
第2步:解压缩php_mcrypt.dll文件并将其复制到../xampp/php/ext/
第3步:打开../xampp/php/php.ini文件并添加一行$dirpath = public_path('images');
$name = $request['image']->getClientOriginalExtension();
$filename = time().'_'.$name;
$file=$request['image']->move($dirpath, $filename);
第4步:重新启动apache,完成!