php - not - problema con la instalación de mcrypt
php7 2-< mcrypt (6)
Le pedí a los administradores del sistema que instalen mcrypt en el servidor y dicen que todo está bien. Pero cuando ejecuto mi script simple obtengo esto.
Advertencia: mcrypt_get_iv_size () [function.mcrypt-get-iv-size]: Falló la inicialización del módulo
Viene de esta línea:
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB);
Ahora, desde este código:
$algorithms = mcrypt_list_algorithms("/usr/local/bin/mcrypt");
foreach ($algorithms as $cipher) {
echo "$cipher<br />/n";
}
Yo obtengo:
Advertencia: mcrypt_list_algorithms () [function.mcrypt-list-algorithms]: no se encontraron algoritmos en el módulo dir
Cuando ejecuto esto:
$modes = mcrypt_list_modes("/usr/local/bin/mcrypt");
foreach ($modes as $mode) {
echo "$mode <br />/n";
}
Yo obtengo:
Advertencia: mcrypt_list_modes () [function.mcrypt-list-modes]: No se encontraron modos en el módulo dir
Sin embargo, al ejecutar este comando, este comando
which mcrypt; mcrypt -v
Produce:
/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 ([email protected])
¿Está mcrypt instalado / configurado correctamente?
ACTUALIZAR:
Hice esto:
whereis libmcrypt
... y obtuve el resultado:
libmcrypt: /usr/local/lib/libmcrypt /usr/local/lib/libmcrypt.so /usr/local/lib/libmcrypt.la
También he cambiado:
$modes = mcrypt_list_modes("/usr/local/bin/mcrypt");
a...
$modes = mcrypt_list_modes("/usr/local/lib/libmcrypt");
$algorithms = mcrypt_list_algorithms("/usr/local/lib/libmcrypt");
Como se recomienda, pero aún así recibe el error:
Advertencia: mcrypt_list_modes () [function.mcrypt-list-modes]: No se encontraron modos en el módulo dir en
Luego entré al administrador de archivos en mi CPanel a /usr/local/lib/libmcrypt
. El directorio existe pero no tiene archivos ...
Aquí está la pantalla de impresión del administrador de archivos.
Gracias.
El directorio de algoritmos de mcrypt debe ser un directorio que contenga los algoritmos, no un binario . Esto significa que esto:
$modes = mcrypt_list_modes("/usr/local/bin/mcrypt");
Debería ser esto en su lugar (suponiendo que mcrypt esté instalado es /usr/local/lib/libmcrypt
):
$modes = mcrypt_list_modes("/usr/local/lib/libmcrypt");
Si el directorio donde está instalado libmcrypt
no es el anterior, debe actualizar su configuración de php.ini . Tomado de 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=
Si tiene acceso al shell, puede probar este comando para encontrar el directorio lib para su instalación de mcrypt:
whereis libmcrypt
o...
whereis mcrypt
Dependiendo de tu configuración
Tuve exactamente el mismo problema.
> 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 [...]
Fue resuelto al reconfigurar y recompilar libmcrypt con estas opciones:
./configure --prefix=$YOUR_PATH/libmcrypt --enable-dynamic-loading --disable-posix-threads
Luego en tu php.ini:
mcrypt.algorithms_dir=<YOUR_PATH>/libmcrypt/lib/libmcrypt
mcrypt.modes_dir=<YOUR_PATH>/libmcrypt/lib/libmcrypt
Pruebe esto con su problema de mcrypt:
mv -i /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
sudo php5enmod mcrypt
sudo service apache2 restart
Es un error con la ubicación del archivo mcrypt.ini.
Tuve el mismo error, hice un cp en lugar de un mv para estar seguro, pero resolvió el problema.
Para PHP no funciona, si obtienes phpmyadmin funcionando (incluso con el error mcrypt), significa que PHP está funcionando (porque phpmyadmin usa PHP). Pero en tu ejemplo
<? echo $row[''details'']; ?>
cambiar <?
a <?php
y prueba de nuevo?
En Ubuntu 14.04 solo necesita hacer solo tres pasos como sudo:
apt-get install php5-mcrypt
php5enmod mcrypt
service apache2 restart
Cómo instalar mcrypt en MAC OSX:
Hola, probado y trabajando en Mac OSX El Capitán:
1. Descargue mcrypt: http://www.viames.it/download/elcapitan/mcrypt.so
2. Ponlo en:
/ usr / lib / php / extensions / mcrypt
3. Modifica tu ''php.ini''
/etc/php.ini
y agrega la siguiente línea:
extension = /usr/lib/php/extensions/mcrypt.so
4. Compruebe si ''mcrypt'' está cargado con el siguiente comando:
php -m
resultado de la consola php -m
5. Crea un ''phpinfo.php'' con contenido:
<?php echo phpinfo(); ?>
y vea si mcrypt está en la lista:
phpinfo () muestra ahora mcrypt para ser cargado
Sí, sé que soy un gangsta.
Arquitectura: instalación de Centos 6 / Apache 2.2 / Dual PHP (5.3 y 5.4)
ACTUALIZACIÓN: Esta solución explica cómo instalar el módulo mcrypt con PHP 5.4 manualmente desde Remi''s RPM en Centos 6, pero este RPM requiere glibc-2.14 +, por lo que esto no es suficiente para que funcione, si su glibc es anterior a eso.
En mi configuración, Yum install php-mcrypt*
mostró como instalada la versión para 5.3
en la raíz normal:
php-mcrypt.x86_64 5.3.3-5.el6 @epel
Sin embargo, 5.4 es chrooted en /opt/rh/php54
Simplemente copiando los 5.3 módulos y archivos de configuración no funciona . El módulo falla la inicialización, es por eso que no aparece en phpinfo (), esto se puede verificar con
/opt/rh/php54/root/usr/bin/php -v
La solución que funcionó para mí es descargar el RPM de Remi (aunque normalmente es más fácil de instalar agregando su repositorio de Yum como se discutió en los Comentarios) ( 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
extraer los archivos con 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
Y copia a la carpeta chroot
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/
Verificar:
/opt/rh/php54/root/usr/bin/php -v
Y también:
<html>
<body>
<?php
phpinfo();
?>
</body>
</html>