Fatal error: Call to undefined function mcrypt_encrypt()

匿名 (未验证) 提交于 2019-12-03 01:18:02

问题:

NOTE: The libraries MCrypt support depend on have not been updated in years and MCrypt should no longer be considered a viable or secure method of encrypting data. What's more, MCrypt has been deprecated in PHP 5, and removed entirely in PHP 7. If you have any code that runs MCrypt you should refactor it to use a more modern encryption library.


Does anyone know why this error message: (Call to undefined function mcrypt_encrypt() ) displays when I run the following code below?

Am I missing some steps perhaps any setting in PHP I have to do before this code can work?

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

回答1:

What had worked for me with PHP version 5.2.8, was to open up php.ini and allow the php_mcrypt.dll extension by removing the ;, i.e. changing:

;extension=php_mcrypt.dll to extension=php_mcrypt.dll



回答2:

If you have recently updated to ubuntu 14.04 here is the fix to this problem:

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


回答3:

For windows

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

For 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 

For Ubuntu

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

Still not working?

sudo php5enmod mcrypt && sudo service apache2 restart



回答4:

You don't have the mcrypt library installed.

See http://www.php.net/manual/en/mcrypt.setup.php for more information.

If you are on shared hosting, you can ask your provider to install it.


In OSX you can easily install mcrypt via homebrew

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

Then add this line to /etc/php.ini.

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


回答5:

Under Ubuntu I had the problem and solved it with

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


回答6:

On ubuntu 14.10 :

Install module mcrypt

sudo apt install php5-mcrypt 

Enable module mcrypt on apache2

sudo a2enmod mcrypt 

Reload module configuration

sudo service apache2 restart 


回答7:

On Linux Mint 17.1 Rebecca - Call to undefined function mcrypt_create_iv...

Solved by adding the following line to the php.ini

extension=mcrypt.so 

After that a

service apache2 restart 

solved it...



回答8:

Is mcrypt enabled? You can use phpinfo() to see if it is.



回答9:

One more thing: if you are serving PHP via a web server such as Apache, try restarting the web server. This will "reset" any PHP modules that might be present, activating the new configuration.



回答10:

Assuming you are using debian linux (I'm using Linux mint 12, problem was on Ubuntu 12.04.1 LTS server I ssh'ed into.)

I suggest taking @dkamins advice and making sure you have mcrypt installed and active on your php5 install. Use "sudo apt-get install php5-mcrypt" to install. My notes below.

Using PHP version PHP Version 5.3.10-1ubuntu3.4, if you open phpinfo() as suggested by @John Conde, which you do by creating test file on web server (e.g. create status page testphp.php with just the contents "" anywhere accessible on the server via browser)

I found no presence of enabled or disabled status on the status page when opened in browser. When I then opened the php.ini file, mentioned by @Anthony Forloney, thinking to uncomment ;extension=php_mcrypt.dll to extension=php_mcrypt.dll

I toggled that back and forth and restarted Apache (I'm running Apache2 and you can restart in my setup with sudo /etc/init.d/apache2 restart or when you are in that directory just sudo restart I believe) with change and without change but all no go. I took @dkamins advice and went to install the package with "sudo apt-get install php5-mcrypt" and then restarted apache as above. Then my error was gone and my application worked fine.



回答11:

If you are using php5-fpm do remeber to restart it, after installing mcrypt

service php5-fpm restart



回答12:

If you using ubuntu 14.04 here is the fix to this problem:

First check php5-mcryp is already installed apt-get install php5-mcrypt

If installed, just run this two command or install and run this two command

$ sudo php5enmod mcrypt $ sudo service apache2 restart 

I hope it will work.



回答13:

I had the same issue for PHP 7 version of missing mcrypt.

This worked for me.

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


回答14:

for Linux based (Fedora)

yum -y install php-mcrypt 

Enable the module by adding: 'extension=mcrypt.so' to PHP.ini. (/etc/php.ini)

systemctl restart httpd.service 

Done!



回答15:

For me it helped to uninstall mcrypt with:

sudo apt-get purge php5-mcrypt 

and simply reinstall it:

sudo apt-get install php5-mcrypt 

and dont forget to restart apache as described above.

Dont know why and how this was different in my case (using a vm with provisioned php55), but maybe this will help someone else. I also had this problem with some other modules like xcache...



回答16:

Check and install php5-mcrypt:

sudo apt-get install php5-mcrypt 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!