Laravel requiere la extensión PHP Mcrypt


429

Estoy tratando de usar la migratefunción en Laravel 4on OSX. Sin embargo, recibo el siguiente error:

Laravel requires the Mcrypt PHP extension.

Por lo que entiendo, ya está habilitado (ver la imagen a continuación).

¿Qué está mal y cómo puedo solucionarlo?

ingrese la descripción de la imagen aquí


¿Usas Laravel 3 o 4?
Jan P.

Acabo de agregar la información a la publicación. Es Laravel 4
Patrick Reck

44
Tal vez esta publicación lo ayude: stackoverflow.com/questions/14476181/…
Jan P.

¿Está utilizando PHP incorporado o instaló otra versión? Si es así, ¿cómo lo instaló?
Jamie Schembri

2
Encontré esta solución fácil usando homebrew: jorble.com/2013/04/install-php-mcrypt-in-macosx
gelviis

Respuestas:


289

Las extensiones habilitadas para la web y las extensiones habilitadas para la línea de comandos pueden ser diferentes. Ejecute php -men su terminal y verifique si mcryptestá en la lista. Si no es así, verifique desde dónde la línea de comando está cargando su php.iniarchivo ejecutándose php --inidesde su terminal.

En este php.iniarchivo puede habilitar la extensión.

OSX

He oído hablar de personas en OSX que se enfrentan a problemas debido a que el terminal apunta al PHP nativo enviado con OSX. En su lugar, debe actualizar su perfil de bash para incluir la ruta real a su PHP. Algo como esto (en realidad no uso OSX, por lo que podría no ser del 100%):

export PATH=/usr/local/php5/bin:$PATH

Ubuntu

En versiones anteriores de Ubuntu (anteriores a 14.04) cuando lo ejecuta, sudo apt-get install php5-mcrypten realidad no instala la extensión en el mods-available. Tendrás que vincularlo.

sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini

En todas las versiones de Ubuntu, deberá habilitar el mod una vez que esté instalado. Puedes hacer eso con php5enmod.

sudo php5enmod mcrypt
sudo service apache2 restart

NOTAS


44
esto funcionó para mí en Ubuntu, ¡gracias! Extraño cómo sudo apt-get install php5-mcryptno instala realmente la extensión por completo.
Aristides

Ubuntu 13.10 - También tuve que instalar mcrypt
Ondrej Galbavý

1
Aparentemente ya había instalado mcrypt ini en mods-available, simplemente no estaba al tanto del comando php5enmod. Usar eso hace que funcione como un encanto. ¡Gracias!
imkingdavid

Entonces, justo en esto, tengo mcrypt en la lista cuando voy a php -m, cuando voy a qué php dice / usr / local / bin / php. He intentado instalar mcrypt con brew y parecía haber funcionado. Pero Laravel todavía dice que se requiere la extensión Mcrypt PHP.
Marais Rossouw

1
Al igual que @imkingdavid, tampoco necesitaba el enlace simbólico. php5enmod fue suficiente. Ubuntu 14.04 LTS
Brett

340

¿Tienes instalado MAMP ?

Use which phpen la terminal para ver qué versión de PHP está usando.

Si no es la versión PHP de MAMP, debe editar o agregar .bash_profileen el directorio de inicio del usuario, es decir:cd ~

En .bash_profile, agregue la siguiente línea:

export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH

Editado: Primero debe usar el comando cd /Applications/MAMP/bin/phppara verificar qué versión de PHP de MAMP está usando y luego reemplazar con la versión de PHP anterior.

Luego, restartel terminal para ver qué PHP está utilizando ahora.

Y debería estar funcionando ahora.


18
No necesita MAMP para obtener Mcrypt.
jackyalcine

48
por supuesto que no necesitas MAMP para obtener Mcrypt. esta respuesta es solo para personas que tienen múltiples versiones de PHP instaladas en su computadora, por ejemplo, XAMPP o MAMP, u otras.
JustinHo

Del mismo modo, para los usuarios de AMPPS: export PATH=/Applications/AMPPS/php-5.4/bin:$PATH... suponiendo que esté disparando para 5.4.xx, también hay 5.3 y 5.5.
Joel Mellon

66
No todos usan MAMP, ¿tienes una respuesta para el resto de la gente?
TuGordoBello

2
Solo pensé en señalar que cd ~es muy importante, debes abrir el .bash_profileque existe allí, TAMBIÉN importante es que debes cerrar tu terminal y volver a abrir para que se carguen las nuevas variables de bash. Solo asegúrese de ejecutar qué php para verificar que se haya aplicado su cambio, ¡feliz codificación!
wired00

142

Para aquellos que usan XAMPP 1.7.3 y Mac

  1. Ir a la terminal
  2. Entrar which php
    • Si dice /usr/bin/php, entonces proceda a 3.
  3. Ingrese sudo nano ~/.bash_profile(o sudo vim ~/.bash_profilesi sabe cómo usarlo)
  4. Luego pegue esto export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
  5. Ctrl+Oluego ingrese para guardar, luego Ctrl+Xpara salir.
  6. Tipo cd ~
  7. tipo . .bash_profile
  8. reiniciar terminal.
  9. Introduzca which php. Si lo hiciste bien, debería ser el mismo que la ruta en el n. ° 4.

La razón del error de mcrypt es porque su Mac usa su php nativo, debe cambiarlo al que tiene xampp.

PD: recomendaría usar MAMP para Laravel 4 para usuarios de Mac, este problema se resolverá junto con el error de información del archivo php sin problemas, y la versión php de xampp está muy desactualizada.


12
También una buena respuesta! Debería ser esto para MAMP:"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
Foxinni

3
para aquellos que no tienen ~ / .bash_profile, intente verificar el ~ / .bashrc
Ironwind

66
ejecuta el .bash_profile inmediatamente, normalmente necesita reiniciar para que esos bash se ejecuten
Bryan P

Algo malo sucedió y ahora mi terminal ni siquiera reconocería sudo
Sunny R Gupta

También funciona en lampp, solo cambia el camino aexport PATH="/opt/lampp/bin:$PATH"
JTC

87

Para usuarios que no sean MAMP o XAMPP en OSX (con homebrew instalado):

brew install homebrew/php/php56-mcrypt

¡Salud!


1
Me preocupaba que esto no funcionara con OSX PHP nativo, pero lo instalé y no tuve que perder el tiempo con mi RUTA ni nada. Solo funciona Buena esa.
Lauren

3
Sería genial tener esta respuesta adjunta a las respuestas principales en este hilo, para que sea un recurso más completo. Gracias por el rápido consejo, como Lauren mencionó, esto realmente soluciona el problema.
Bryan Rayner

44
Esto es en realidad $ brew install homebrew/php/php55-mcrypt, de lo contrario tieneError: No available formula with the name "php55-mcrypt"
Connor Leech

47

Usando Ubuntu, solo

sudo php5enmod mcrypt

hizo el truco para mí No necesita reiniciar Apache ya que necesita usar PHP solo desde la CLI.


37

En Ubuntu (PHP-FPM, Nginx)

sudo apt-get install php5-mcrypt

Después de instalar php5-mcrypt

tienes que hacer un enlace simbólico a archivos ini en mods-available:

sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini

habilitar:

sudo php5enmod mcrypt

reiniciar php5-fpm:

sudo service php5-fpm restart

Mas detalle


Corrí sudo aptitude -y install php5-mcrypt, seguido de sudo php5enmod mcrypty sudo service php5-fpm restart. (Me salté el paso de vinculación suave). Funcionó :)
Aditya MP

26

Hacer que Laravel trabaje en Apache

Versión de PHP: PHP 5.5.9

Versión de Ubuntu: 14.04

Tuve un proyecto de trabajo de Laravel en Windows. cuando lo copié al servidor ubuntu, comencé a recibir el error mcrypt. esto después de muchas horas de prueba y error

conseguir que el comando artesanal funcione

(si tiene un error mcrypt mientras usa la herramienta de línea de comando artesanal)

Hice muchas pruebas y errores, así que cada vez que ejecutaba el comando php5enmod antes, tenía mensajes de error. pero en la nueva instalación no hubo mensajes de error. después de este paso conseguí que el comando artesanal funcionara

sudo rm /etc/php5/mods-available/mcrypt.ini
sudo apt-get purge php5-mcrypt
sudo apt-get install mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

arreglando el error del navegador

(si tiene un error mcrypt en el navegador al acceder a la página de índice de laravel local)

sudo nano /etc/php5/apache2/php.ini

agregue la siguiente línea en la sección de extensiones compiladas dinámicamente de php ini

extension=mcrypt.so

reinicie el servidor apache, purgue el caché laravel y todo funcione


Si está trabajando en php docker image , también debe ejecutarlo docker-php-ext-install mcrypt. Probado en la imagen: php:5.6.31-apache. Sin eso, php -mno se muestra mcrypt.
Ewa

19

Para las instalaciones de php-fpm en Ubuntu 14.04, lo siguiente funcionó para mí:

sudo apt-get install php5-mcrypt

Esto creará un mcrypt.iniarchivo dentro/etc/php5/mods-available/

Entonces

sudo php5enmod mcrypt

creará un enlace simbólico en: /etc/php5/fpm/conf.d/

Simplemente reinicie los servicios php-fpm sudo service php5-fpm restart


19

Para ubuntu, intente estos pasos si otros no funcionan:

  1. cd ~
  2. sudo apt-get remove php5-mcrypt
  3. sudo apt-get install php5-mcrypt
  4. sudo php5enmod mcrypt
  5. sudo service apache2 restart

Espero que eso ayude. Gracias !


19

O usar:

sudo apt-get install php5-mcrypt

no estoy seguro de si esto funcionará en las instalaciones estándar de PHP. Lo instalé php 5.5.7usando el paquete de:

sudo add-apt-repository ppa:ondrej/php5 
sudo apt-get update

16

Mi sistema operativo es Yosemite.

Resuelvo este problema, encontrando rutas de configuración:

php --ini

Salida de ejemplo:

Configuration File (php.ini) Path: /usr/local/etc/php/5.5
Loaded Configuration File:         /usr/local/etc/php/5.5/php.ini
Scan for additional .ini files in: /usr/local/etc/php/5.5/conf.d
Additional .ini files parsed:      (none)

Próximos pasos:

  1. Cambiar el nombre o eliminar el archivo inp php55
  2. Crear enlace simbólico
  3. Reiniciar el servidor Apache

Comandos:

mv /usr/local/etc/php/5.5/php.ini /usr/local/etc/php/5.5/php.ini.default
ln -s /etc/php.ini /usr/local/etc/php/5.5/php.ini
sudo apachectl restart

Luego puede verificar sus módulos php a través de:

php -m

16

Solo por años,

yum install php-mcrypt
service httpd restart
chown -R apache:apache apppath

Tal vez necesites instalar remi repo



14

Necesita un entorno todo en uno. Puede usar MAMP o XAMPP o cualquier otra herramienta. Después de instalar una de estas herramientas, deberá editar (crear) su .bash_profile (suponiendo que use bash).

O incluso simple y más profesional puede usar Laravel Homestead.

Aquí hay un enlace a la documentación oficial: http://laravel.com/docs/5.0/homestead

También Jeffrey tiene un tutorial gratuito al respecto: https://laracasts.com/series/laravel-5-fundamentals/episodes/2

Te aconsejo que vayas con Homestead porque preinstalarás todas las siguientes herramientas.

  • Ubuntu 14.04
  • PHP 5.6
  • H HVM
  • Nginx
  • MySQL
  • Postgres
  • Nodo (con Bower, Grunt y Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Enviado de Laravel
  • Tejido + Extensión HipChat

10

Expandiendo en @JetLaggy:

Después de intentar una y otra vez modificar .bash_profile con el directorio MAMP, cambié los permisos de archivo para el directorio php de MAMP y pude obtener 'qué php' para mostrar el directorio apropiado. El problema era que otras funciones no funcionaban, como 'php -v'.

Así que actualicé MAMP. http://documentation.mamp.info/en/mamp/installation/updating-mamp

Esto hizo el truco para mi configuración particular. Tuve que ajustar mi RUTA para reflejar la versión actualizada de PHP, pero una vez que lo hice, ¡todo funcionó!


9

En OS X

Usando MAMP

Ingrese el comando which phpen la terminal para ver qué versión de PHP está utilizando. Si no es la versión PHP de MAMP, la variable $ PATH utilizada por Bash deberá actualizarse.

Primero, debe usar el comando "cd / Applications / MAMP / bin / php" para verificar qué versión de php de MAMP y tomar nota de la versión (por ejemplo, php5.6.7).

Una vez que conozca la versión, debe editar el ~/.bash_profilearchivo (es decir, el .bash_profileque está en su directorio de inicio) y agregar una línea de exportación:

    export PATH=/Applications/MAMP/bin/php/php5.6.7/bin:$PATH

Asegúrese de reemplazar php5.6.7 con la versión de PHP que ha seleccionado en MAMP.

Una vez que el archivo se ha guardado, asegúrese de cerrar, cerrar su Terminal y volver a abrirlo. Una vez hecho esto, utilizará el PHP que se incluye con MAMP.


Una forma de encontrar fácilmente cuál debería ser la línea que necesita poner dentro de su .bash_profilees ejecutar el siguiente comando dentro de su terminal:

    echo export PATH=`cat /Applications/MAMP/conf/apache/httpd.conf \
         | grep php | grep -i LoadModule | head -n1 \
         | sed -e 's/^[^\/]*\/\(.*\)\/mod.*/\/\1/'`/bin:\$PATH

Copiar y pegar esas tres líneas en su terminal generará correctamente la versión de PHP que se ha seleccionado dentro del panel de control de MAMP.

Usando Homebrew / MacPorts

Asegúrese de que su pathcontiene /usr/local/bin/(Homebrew) o/opt/local/bin (MacPorts) si está utilizando PHP que viene con cualquiera de estos dos administradores de paquetes.

Comprobación de la ruta PHP con MacPorts

Puede encontrar la ubicación exacta de PHP usando MacPorts con el siguiente comando:

port contents php70 | grep bin/php

Tenga en cuenta que debe reemplazar php70con la versión de PHP que ha instalado.

Verifique la ruta PHP con Homebrew-php

Homebrew-php ( https://github.com/Homebrew/homebrew-php ) es un grifo que tiene varias versiones diferentes de PHP.

Puede encontrar la ubicación exacta de PHP usando Homebrew con el siguiente comando:

brew --prefix homebrew/php/php56

Tenga en cuenta que debe reemplazar php56con la versión de PHP que ha instalado.


6

en Ubuntu 14.04

sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

Ubuntu 16.04

sudo apt-get install php-mcrypt
sudo phpenmod mcrypt

Ubuntu 18.04

sudo apt install php7.0-mcrypt
sudo phpenmod mcrypt

o

sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt

5

Si está utilizando Z Shell, simplemente haga lo siguiente:

  1. Terminal abierta
  2. sudo nano ~/.zshrc
  3. Pegar esto; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
  4. Salvar
  5. correr source ~/.zshrc
  6. Ejecutar which php : debe obtener la ruta MAMP 5.6.10

5.6.10 es la versión de PHP que configuró en su MAMP.


3

OSX con cerveza

$ brew install mcrypt php70-mcrypt

Estoy ejecutando PHP 7.0.x, así que cambie "php70" a su versión, si está utilizando una versión diferente.
Como se indica en otras respuestas, puede ver su versión de PHP con $ php -v.


3

Para aquellos que todavía vienen aquí hoy:

Laravel ya no necesita mcryptextensión . mcryptestá obsoleto, la última actualización de libmcrypt fue en 2007. Laravel 4.2 también está obsoleto y no tiene más soporte. La mejor solución (= segura) es actualizar a Laravel> 5.1 (no hay LTS antes de Laravel 5.2).

Mcrypt fue eliminado de Laravel en junio de 2015: https://github.com/laravel/framework/pull/9041



0

sudo php instalar mcrypt

sudo php5enmod mcrypt


1
Si bien su comentario podría ser técnicamente cierto, nos esforzamos por incluir alguna explicación a sus respuestas aquí en StackOverflow. Además, parece que OP ya está instalado mcrypt, ¿podría explicar por qué cree que esto solucionará el problema de OP?
milo526

0

en ubuntu 14.04 basado en su versión de php: 5.6,7.0,7.1,7.2,7.3

sudo apt-get install php {versión} -mcrypt

sudo apt-get install php7.1-mcrypt

sudo phpenmod mcrypt 
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.