I've asked the system admins to install mcrypt on the server, and they say everything is OK. But when I run my simple script I get this.
Warning: mcrypt_get_iv_size() [function.mcrypt-get-iv-size]: Module initialization failed
It's coming from this line:
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB);
Now, from this code:
$algorithms = mcrypt_list_algorithms("/usr/local/bin/mcrypt");
foreach ($algorithms as $cipher) {
echo "$cipher<br />\n";
}
I get:
Warning: mcrypt_list_algorithms() [function.mcrypt-list-algorithms]: No algorithms found in module dir
When I run this:
$modes = mcrypt_list_modes("/usr/local/bin/mcrypt");
foreach ($modes as $mode) {
echo "$mode <br />\n";
}
I get:
Warning: mcrypt_list_modes() [function.mcrypt-list-modes]: No modes found in module dir
However, running this command this command
which mcrypt; mcrypt -v
Produces:
/usr/local/bin/mcrypt
Mcrypt v.0.9.9 (x86_64-unknown-linux-gnu)
Linked against libmcrypt v.2.5.7
Copyright (C) 1998-2002 Nikos Mavroyanopoulos (nmav@gnutls.org)
Is mcrypt installed/configured correctly?
UPDATE:
I did this:
whereis libmcrypt
...and got the result:
libmcrypt: /usr/local/lib/libmcrypt /usr/local/lib/libmcrypt.so /usr/local/lib/libmcrypt.la
I've also changed:
$modes = mcrypt_list_modes("/usr/local/bin/mcrypt");
to...
$modes = mcrypt_list_modes("/usr/local/lib/libmcrypt");
$algorithms = mcrypt_list_algorithms("/usr/local/lib/libmcrypt");
As recommended, but still get the error:
Warning: mcrypt_list_modes() [function.mcrypt-list-modes]: No modes found in module dir in
Then I went into the file manager in my CPanel to /usr/local/lib/libmcrypt
. The directory exists but it has no files in it...
Here is the print screen of the file manager.
Thanks.
The mcrypt algorithms directory must be a directory containing the algorithms, not a binary. This means that this:
Should be this instead (assuming mcrypt is installed is
/usr/local/lib/libmcrypt
):If the directory where
libmcrypt
is installed is not that one above, you have to update your php.ini setting. Taken from php.ini:If you have shell access, you can try this command to find the lib directory for your mcrypt installation:
or...
Depending on your setup.
How to install mcrypt on MAC OSX:
Hello, tested and working on Mac OSX El Capitan:
1. Download mcrypt: http://www.viames.it/download/elcapitan/mcrypt.so
2. Place it in:
3. Modify your 'php.ini'
and add the following line:
4. Check if 'mcrypt' is loaded with the following command:
php -m console result
5. Create a 'phpinfo.php' with content:
and see if mcrypt is listed:
phpinfo() shows now mcrypt to be loaded
Yes, I know I'm a gangsta.
Try this for your mcrypt problem:
It's a bug with the location of the mcrypt.ini file.
I had the same bug, I did a cp instead of a mv to be sure but it solved the problem.
For PHP not working, if you get phpmyadmin working (even with the mcrypt error), it means PHP is working (because phpmyadmin uses PHP). But in your example
change<?
to<?php
and try again?On Ubuntu 14.04 just need to do only three steps as sudo:
Architecture: Centos 6 / Apache 2.2 / Dual PHP installation (5.3 and 5.4)
UPDATE: This solution explains how to install the module mcrypt with PHP 5.4 manually from Remi's RPM on Centos 6, but this RPM requires glibc-2.14+, so this only is not enough to make it work, if your glibc is older than that.
In my configuration,
Yum install php-mcrypt*
showed as installed the version for5.3
in normal root:However, 5.4 is chrooted in
/opt/rh/php54
Simply copying the 5.3 modules and config files does not work. The module fails initialization, that's why it does not appear in phpinfo(), this can be checked with
The solution that worked for me is to download the Remi's RPM (although it's normally easier to install it by adding his Yum repository as discussed in the Comments) (https://www.rpmfind.net/linux/RPM/remi/fedora/25/x86_64/php54-php-mcrypt-5.4.45-12.fc25.remi.x86_64.html)
extract the files with RPM2CPIO:
And copy to the chroot folder
To check:
And also:
I had exactly the same problem.
It was solved by reconfiguring and recompiling libmcrypt with these options:
Then in your php.ini :