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
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 for 5.3
in normal root:
php-mcrypt.x86_64 5.3.3-5.el6 @epel
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
/opt/rh/php54/root/usr/bin/php -v
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)
wget ftp://fr2.rpmfind.net/linux/remi/fedora/25/remi/x86_64/php54-php-mcrypt-5.4.45-12.fc25.remi.x86_64.rpm
extract the files with RPM2CPIO:
rpm2cpio php54-php-mcrypt-5.4.45-12.fc25.remi.x86_64.rpm |cpio -idmv
./opt/remi/php54/root/etc/php.d/mcrypt.ini
./opt/remi/php54/root/usr/lib64/php/modules/mcrypt.so
98 blocks
And copy to the chroot folder
cp ./opt/remi/php54/root/etc/php.d/mcrypt.ini /opt/rh/php54/root/etc/php.d/mcrypt.ini
cp ./opt/remi/php54/root/usr/lib64/php/modules/mcrypt.so /opt/rh/php54/root/usr/lib64/php/modules/
To check:
/opt/rh/php54/root/usr/bin/php -v
And also:
<html>
<body>
<?php
phpinfo();
?>
</body>
</html>
How to install mcrypt on MAC OSX:
Hello, tested and working on Mac OSX El Capitan:
/usr/lib/php/extensions/mcrypt
/etc/php.ini
and add the following line:
extension = /usr/lib/php/extensions/mcrypt.so
php -m
php -m console result
<?php echo phpinfo(); ?>
and see if mcrypt is listed:
phpinfo() shows now mcrypt to be loaded
Yes, I know I'm a gangsta.
The mcrypt algorithms directory must be a directory containing the algorithms, not a binary. This means that this:
$modes = mcrypt_list_modes("/usr/local/bin/mcrypt");
Should be this instead (assuming mcrypt is installed is /usr/local/lib/libmcrypt
):
$modes = mcrypt_list_modes("/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:
[mcrypt]
; Directory where to load mcrypt algorithms
; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt)
;mcrypt.algorithms_dir=
; Directory where to load mcrypt modes
; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt)
;mcrypt.modes_dir=
If you have shell access, you can try this command to find the lib directory for your mcrypt installation:
whereis libmcrypt
or...
whereis mcrypt
Depending on your setup.
On Ubuntu 14.04 just need to do only three steps as sudo:
apt-get install php5-mcrypt
php5enmod mcrypt
service apache2 restart
Try this for your mcrypt problem:
mv -i /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
sudo php5enmod mcrypt
sudo service apache2 restart
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
<? echo $row['details']; ?>
change <?
to <?php
and try again?
I had exactly the same problem.
> mcrypt -v
Mcrypt v.0.9.9 (sparc-sun-solaris2.10)
Linked against libmcrypt v.2.5.8
> mcrypt --list-hash
Supported Hash Algorithms:
crc32
md5
sha1
haval256
ripemd160
tiger
gost
[...]
> php CryptoTest.php
PHP Warning: mcrypt_list_modes(): No modes found in module dir in [...]
It was solved by reconfiguring and recompiling libmcrypt with these options:
./configure --prefix=$YOUR_PATH/libmcrypt --enable-dynamic-loading --disable-posix-threads
Then in your php.ini :
mcrypt.algorithms_dir=<YOUR_PATH>/libmcrypt/lib/libmcrypt
mcrypt.modes_dir=<YOUR_PATH>/libmcrypt/lib/libmcrypt