Laravel requiere la extensión PHP Mcrypt
Estoy intentando utilizar la migrate
función en Laravel 4 en OSX. Sin embargo, recibo el siguiente error:
Laravel requires the Mcrypt PHP extension.
Según tengo entendido, ya está habilitado (vea la imagen a continuación).
¿Qué está mal y cómo puedo solucionarlo?
¿Tienes MAMP instalado?
Úselo which php
en la terminal para ver qué versión de PHP está usando.
Si no es la versión PHP de MAMP, debes editarla o agregarla .bash_profile
en 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 debes usar el comando cd /Applications/MAMP/bin/php
para verificar qué versión de PHP de MAMP estás usando y luego reemplazar con la versión de PHP anterior.
Luego restart
la terminal para ver qué PHP estás usando ahora.
Y debería estar funcionando ahora.
Las extensiones habilitadas para la web y las extensiones habilitadas para la línea de comandos pueden diferir. Ejecute php -m
en su terminal y verifique si mcrypt
aparece en la lista. Si no es así, verifique desde dónde carga la línea de comando su php.ini
archivo ejecutándolo php --ini
desde su terminal.
En este php.ini
archivo puede habilitar la extensión.
OSX
He oído hablar de personas en OSX que tuvieron problemas debido a que el terminal apunta al PHP nativo incluido con OSX. En su lugar, deberías actualizar tu perfil de bash para incluir la ruta real a tu PHP. Algo como esto (en realidad no uso OSX, por lo que es posible que no sea 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-mcrypt
en realidad no instala la extensión en el archivo mods-available
. Necesitará vincularlo simbólicamente.
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini
En todas las versiones de Ubuntu, deberás habilitar el mod una vez que esté instalado. Puedes hacer eso con php5enmod
.
sudo php5enmod mcrypt
sudo service apache2 restart
NOTAS
- PHP 7.1 dejó obsoleto a mcrypt y 7.2 eliminó la extensión mcrypt por completo
- Laravel 5.1 y posteriores eliminaron la necesidad de mcrypt
Para aquellos que usan XAMPP 1.7.3 y Mac
- Ir a terminal
- Ingresar
which php
- Si dice
/usr/bin/php
, continúe con 3.
- Si dice
- Entra
sudo nano ~/.bash_profile
(osudo vim ~/.bash_profile
si sabes usarlo) - Luego pega esto
export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
- Ctrl+Oluego ingrese para guardar, luego Ctrl+Xpara salir.
- Tipo
cd ~
- tipo
. .bash_profile
- reiniciar terminal.
- Ingresar
which php
. Si lo hiciste bien, debería ser el mismo que el camino en el n.° 4.
El motivo del error de mcrypt es que tu Mac usa su php nativo, debes cambiarlo por el que tiene xampp.
PD: Recomiendo 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.
Para usuarios que no son MAMP o XAMPP en OSX (con homebrew instalado):
brew install homebrew/php/php56-mcrypt
¡Salud!