NOTA: Las bibliotecas MCrypt apoyo dependen no ha sido actualizado en años y MCrypt no debe ser considerada como viable o método seguro de cifrado de datos. Lo que es más, MCrypt ha sido desaprobado en PHP 5, y eliminado por completo en PHP 7. Si usted tiene cualquier código que se ejecuta MCrypt es necesario refactorizar es utilizar una forma más moderna de la biblioteca de cifrado.


¿Alguien sabe por qué este mensaje de error: (Call to undefined function mcrypt_encrypt() ) muestra al ejecutar el siguiente código debajo?

Que me estoy perdiendo algunos de los pasos que quizás cualquier configuración en PHP que tengo que hacer antes de que este código puede funcionar?

$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)));
  • ¿Qué versión de PHP está en ejecución?
  • Tal vez usted tiene PHP 4.0.1, este es un 4.0.2 función. Se ejecuta correctamente en aquí.
  • Tengo la versión 5.2.8 y me sale el indefinido de la función de error.
  • Es mejor no utilizar mcrypt, es abandonware, no ha sido actualizado en años y no es compatible con el estándar PKCS#7 (née PKCS#5) de relleno, sólo no estándar null relleno que aún no puede ser utilizado con datos binarios. mcrypt tiene muchos pendientes bugs que se remonta a 2003. En lugar de considerar el uso de desactivar o RNCryptor, proporcionan una solución completa y se mantienen y es correcta.
InformationsquelleAutor Jin Yong | 2010-04-09

17 Comentarios

  1. 34

    Lo que había trabajado para mí con la versión de PHP 5.2.8, fue la apertura de php.ini y permitir que el php_mcrypt.dll extensión mediante la eliminación de la ;, es decir, el cambio:

    ;extension=php_mcrypt.dll a extension=php_mcrypt.dll

  2. 89

    Si usted recientemente ha actualizado a ubuntu 14.04 aquí está la solución a este problema:

    $ sudo mv /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
    $ sudo php5enmod mcrypt
    $ sudo service apache2 restart
    • Funcionó!!! Gracias!. Sólo con las dos últimas líneas.
    • Su respuesta es mejor que la aceptación de uno.
    • mcrypt.ini ya estaba en /etc/php5/mods-available/ en mi instalación, así que sólo tenía que correr php5enmod.
    • Tuve que hacer la copia de archivos. Muchas gracias !
    • He empezado una nueva máquina y no han mcrypt instalado: no olvide asegurarse de mcrypt está instalado antes de este paso con $ sudo apt-get install php5-mcrypt y, a continuación, compruebe askubuntu.com/questions/460837/…
    • gracias!!! Yo tenía el mismo problema después de la transferencia de hosting a un nuevo dev server… Esta es la razón por desbordamiento de pila es genial!!!
    • Estoy usando vagrant ssh en una instalación de WAMPServer, y tenía que primero instalar php5-mcrypt y luego hizo el «sudo php5enmod mcrypt» y reiniciar vagrant fijo que es para mí, gracias.
    • En Ubuntu, NO se debe MOVER el archivo. Crea un enlace simbólico en mods-enabled usted mismo o utilizar el a2enmod comando para activar el mod.
    • Esto me salvó la vida durante una demostración en vivo.

  3. 28

    Para windows

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

    Para 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

    Para Ubuntu

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

    Todavía no funciona?

    sudo php5enmod mcrypt && sudo service apache2 restart

  4. 18

    Usted no tiene la librería mcrypt instalado.

    Ver http://www.php.net/manual/en/mcrypt.setup.php para obtener más información.

    Si usted está en el hosting compartido, puede preguntar a su proveedor para instalarlo.


    De OSX, usted puede instalar fácilmente mcrypt a través de homebrew

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

    A continuación, añada esta línea a /etc/php.ini.

    extension="/usr/local/Cellar/php54-mcrypt/5.4.24/mcrypt.so"
    • Gracias, Para mí era el camino ligeramente diferente, aunque: extension=»/usr/local/Bodega/php55-mcrypt/5.5.22/mcrypt.así»
    • Para mí, no he tenido que editar el php.ini, que ya estaba establecido. Y phpXX XX, es para la versión que está utilizando. (php -v en la terminal a saber.)
    • Ni siquiera tengo la ruta /usr/local/Cellar/. Está usted seguro de que esto es correcto?
  5. 14

    Si está usando PHP 7.2 o hasta:

    Esta función ya no se utiliza en PHP 7.1.0, y se RETIRA en PHP 7.2.0.

    fuente: http://php.net/manual/en/function.mcrypt-encrypt.php

    Así que usted tiene que reemplazar el código php y encontrar una solución sin mcrypt.

    O, me acabo de enterar, usted TODAVÍA puede usar mcrypt PHP 7.2.0, pero tienes que instalarlo como una Extensión de PHP Biblioteca de la Comunidad. (https://pecl.php.net/)

    En Debian/Ubuntu Linux distros:

    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

    a continuación:

    sudo pecl install mcrypt-1.0.1

    Fuente: https://www.techrepublic.com/article/how-to-install-mcrypt-for-php-7-2/

    • ¿Qué debo hacer en lugar de utilizar esta función. Por favor, sugiera cualquier buen métodos.
  6. 11

    Bajo Ubuntu he tenido el problema y resuelto con

    $ sudo apt-get install php5-mcrypt
    $ sudo service apache2 reload
    • Trabajó para mí. Pero tuve que recargar apache manualmente!
  7. 7

    En ubuntu 14.10 :

    Instalar el módulo de mcrypt

    sudo apt install php5-mcrypt

    Habilitar el módulo de mcrypt en apache2

    sudo a2enmod mcrypt

    Volver a cargar la configuración de un módulo

    sudo service apache2 restart
    • Creo que te refieres: sudo php5enmod mcrypt
    • php5enmod y php5dismod son nuevos comandos introducidos en los sistemas debian para php (>= 5.4.0~rc6-1). De acuerdo con este post php.net/manual/fr/mcrypt.setup.php#116231 usted sólo tiene que hacer sudo apt-get install php5-mcrypt sudo php5enmod mcrypt sudo service apache2 reload
  8. 5

    En Linux Mint 17.1 Rebecca – Call to undefined function mcrypt_create_iv…

    Resuelto mediante la adición de la línea siguiente a la de php.ini

    extension=mcrypt.so

    Después de que un

    service apache2 restart

    resuelto…

  9. 4

    Tuve el mismo problema para PHP 7 versión de falta mcrypt.

    Esto funcionó para mí.

    sudo apt-get update
    sudo apt-get install mcrypt php7.0-mcrypt
    sudo apt-get upgrade
    sudo service apache2 restart (if needed)
    • Esto funciona! Pero sólo se necesita php7.0-mcrypt. Después de instalado, y reiniciar apache, es ahora mostrando mcrypt en phpinfo(); Registered Stream Filters zlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, convert.iconv.*, mcrypt.*, mdecrypt.*
  10. 3

    Una cosa más: si usted está sirviendo de PHP a través de un servidor web como Apache, pruebe a reiniciar el servidor web. Esta voluntad «reset» de PHP módulos que pueden estar presentes, activar la nueva configuración.

  11. 3

    Suponiendo que estás usando debian linux (estoy usando Linux mint 12, el problema estaba en Ubuntu 12.04.1 LTS servidor ssh ed en.)

    Sugiero tomar @dkamins asesoramiento y asegurarse de tener mcrypt instalado y activo en su php5 instalar. Usar «sudo apt-get install php5-mcrypt» para instalar. Mis notas de abajo.

    Usando la versión de PHP PHP Version 5.3.10-1ubuntu3.4, si se abre el phpinfo() según lo sugerido por @Juan Conde, la que se realice mediante la creación de un archivo de prueba en el servidor web (por ejemplo, crear la página de estado de testphp.php con solo el contenido «» en cualquier lugar accesible en el servidor a través del navegador)

    He encontrado ninguna presencia del estado habilitado o deshabilitado en la página de estado cuando se abre en el navegador. Cuando me abrió el php.archivo ini, mencionado por @Anthony Forloney, pensando que se elimine ;extension=php_mcrypt.dll to extension=php_mcrypt.dll

    Me toggled que de ida y vuelta y se reinicia Apache (estoy corriendo Apache2 y usted puede reiniciar en mi configuración con sudo /etc/init.d/apache2 restart o cuando usted está en ese directorio sólo sudo restart creo)
    con cambio y sin cambio, pero todos no ir. Tomé @dkamins asesoramiento y fui a instalar el paquete con «sudo apt-get install php5-mcrypt» y, a continuación, reinicie apache como el anterior. Entonces mi error se había ido y mi aplicación funcionaba bien.

  12. 3

    Si usted está usando php5-fpm hacer recuerde reiniciar, después de instalar mcrypt

    servicio php5-fpm reiniciar

  13. 3

    Si usted usando ubuntu 14.04 aquí está la solución a este problema:

    Comprobar primero php5-mcryp ya está instalado apt-get install php5-mcrypt

    Si está instalado, ejecute este comando de dos o instalar y ejecutar este comando dos

    $ sudo php5enmod mcrypt
    $ sudo service apache2 restart

    Espero que funcione.

  14. 1

    para Linux (Fedora)

    yum -y install php-mcrypt

    Habilitar el módulo añadiendo: «extension=mcrypt.así que’ a PHP.ini. (/etc/php.ini)

    systemctl restart httpd.service

    Hecho!

  15. 1

    Me ayudó a desinstalar mcrypt con:

    sudo apt-get purge php5-mcrypt

    y simplemente volver a instalar es:

    sudo apt-get install php5-mcrypt

    y no te olvides de reiniciar apache como se describió anteriormente.

    No sé por qué y cómo esto era diferente en mi caso (usando una máquina virtual con los php55), pero tal vez esto ayude a alguien más. También he tenido este problema con algunos otros módulos como xcache…

Dejar respuesta

Please enter your comment!
Please enter your name here