mac - Laravel requiere la extensión PHP Mcrypt
mcrypt php extension required xampp (22)
sudo php instalar mcrypt
sudo php5enmod mcrypt
Estoy tratando de usar la función de migrate
en Laravel 4
en OSX
. Sin embargo, estoy recibiendo 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?
En OS X
Utilizando MAMP
Ingrese el comando which php
en el terminal para ver qué versión de PHP está utilizando. Si no es la versión de 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 archivo ~/.bash_profile
(es decir, el .bash_profile
que 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 se haya guardado el archivo, asegúrese de cerrar la Terminal y volver a abrirla. Una vez que haya hecho eso, estará usando el PHP que se envía con MAMP.
Una forma de encontrar fácilmente cuál debe ser la línea que debe colocar dentro de su .bash_profile
es 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 path
contenga /usr/local/bin/
(Homebrew) o /opt/local/bin
(MacPorts) si está usando PHP que viene con cualquiera de estos dos administradores de paquetes.
Comprobando la ruta de 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 php70
con la versión de PHP que ha instalado.
Compruebe la ruta de PHP con Homebrew-php
Homebrew-php ( https://github.com/Homebrew/homebrew-php ) es un tap 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 php56
con la versión de PHP que ha instalado.
OSX con cerveza
$ brew install mcrypt php70-mcrypt
Estoy ejecutando PHP 7.0.x, así que cambie "php70" a su versión, si está usando una versión diferente.
Como se indica en otras respuestas, puede ver su versión de php con $ php -v
.
Para aquellos que todavía vienen aquí hoy:
Laravel ya no necesita la extensión mcrypt
. mcrypt
está obsoleto, la última actualización de libmcrypt fue en 2007. Laravel 4.2 también está obsoleto y ya no tiene soporte. La mejor solución (= segura) es actualizar a Laravel> 5.1 (no hay LTS antes de Laravel 5.2).
Mcrypt se eliminó de Laravel en junio de 2015: https://github.com/laravel/framework/pull/9041
¿Tienes instalado MAMP ?
Utilice which php
en el terminal para ver qué versión de PHP está utilizando.
Si no es la versión de PHP de MAMP, debe editar o agregar .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 debe usar el comando cd /Applications/MAMP/bin/php
para verificar qué versión de PHP de MAMP está utilizando y luego reemplazarla con la versión de PHP anterior.
Luego restart
el terminal para ver qué PHP está usando ahora.
Y debería estar funcionando ahora.
A los que usa XAMPP 1.7.3 y Mac.
- Ir a la terminal
- Ingrese
which php
- Si dice
/usr/bin/php
, entonces proceda a 3.
- Si dice
- Ingrese
sudo nano ~/.bash_profile
(osudo vim ~/.bash_profile
si sabe cómo usarlo) - Luego pegue esta
export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
- Ctrl + O luego ingrese para guardar, luego Ctrl + X para salir.
- Escribe
cd ~
- tipo
. .bash_profile
- reiniciar el terminal.
- Introduzca
which php
. Si lo hiciste bien, debería ser el mismo que el camino en # 4.
La razón del error mcrypt es que su Mac usa su php nativo, necesita cambiarlo por el 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 sudor, y la versión php de xampp está tan desactualizada.
Ampliando 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 ''php'' para mostrar el directorio adecuado. El problema era que otras funciones no funcionaban, como ''php -v''.
Entonces 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ó!
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 los 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
Esto lo resolvió para mí en mi entorno local de Linux Mint https://askubuntu.com/questions/350942/cannot-get-mcrypt-for-php5
Necesitaba hacer un enlace simbólico a mi archivo /etc/php5/conf.d/mcrypt.ini en las siguientes carpetas /etc/php5/apache2/conf.d/mcrypt.ini y /etc/php5/cli/conf.d /mcrypt.ini
Las extensiones habilitadas para web y las extensiones habilitadas para línea de comandos pueden diferir. Ejecute php -m
en su terminal y verifique si mcrypt
está en la lista. Si no es así, compruebe desde qué línea de comandos está cargando su archivo php.ini
ejecutando php --ini
desde su terminal.
En este archivo php.ini
puede habilitar la extensión.
OSX
He escuchado que gente en OSX tiene problemas debido a que el terminal apunta al PHP nativo que se envió 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 (antes de la versión 14.04), cuando ejecuta sudo apt-get install php5-mcrypt
en realidad no instala la extensión en los mods-available
. Tendrás que enlazarlo.
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini
En todas las versiones de Ubuntu necesitará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 desaprobado mcrypt y 7.2 ha eliminado completamente la extensión mcrypt
- Laravel 5.1 y más tarde eliminaron la necesidad de mcrypt
Mi sistema operativo es Yosemite
.
Resuelvo este problema, encontrando rutas de configuración:
php --ini
Ejemplo de salida:
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:
- Renombrar o borrar el archivo php55 ini
- Crear enlace simbólico
- Reinicie 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 puedes revisar tus módulos php a través de:
php -m
Necesitas un entorno todo en uno. Puedes 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 utilizar 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 herramientas siguientes.
- Ubuntu 14.04
- PHP 5.6
- H HVM
- Nginx
- MySQL
- Postgres
- Nodo (Con Bower, Grunt y Gulp)
- Redis
- Memcached
- Habichuelas
- Enviado de Laravel
- Extensión de tela + HipChat
O usar:
sudo apt-get install php5-mcrypt
No estoy seguro de si esto funcionará en instalaciones estándar de PHP. Instalé php 5.5.7
usando el paquete de:
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
Para las instalaciones de php-fpm en Ubuntu 14.04, lo siguiente funcionó para mí:
sudo apt-get install php5-mcrypt
Esto creará el archivo mcrypt.ini
dentro de /etc/php5/mods-available/
Entonces
sudo php5enmod mcrypt
creará un enlace simbólico en: /etc/php5/fpm/conf.d/
Simplemente reinicie php-fpm services sudo service php5-fpm restart
Para ubuntu prueba estos pasos si otros no funcionan:
-
cd ~
-
sudo apt-get remove php5-mcrypt
-
sudo apt-get install php5-mcrypt
-
sudo php5enmod mcrypt
-
sudo service apache2 restart
Espero que eso ayude. Gracias !
Para usuarios que no son MAMP o XAMPP en OSX (con Homebrew instalado):
brew install homebrew/php/php56-mcrypt
¡Aclamaciones!
Sólo para yumers,
yum install php-mcrypt
service httpd restart
chown -R apache:apache apppath
Tal vez necesitas instalar remi repo
Si está utilizando el shell Z, haga lo siguiente:
- Terminal abierta
- sudo
nano ~/.zshrc
- Pega esto
export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
- Salvar
- Ejecutar
source ~/.zshrc
- Ejecuta
which php
- deberías obtener la ruta MAMP 5.6.10
5.6.10 es la versión de PHP que configuraste en tu MAMP.
Usando Ubuntu, solo
sudo php5enmod mcrypt
hizo el truco para mí No necesita reiniciar Apache ya que necesita usar PHP solo desde la CLI.
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
en ubuntu 14.04 basado en su versión 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
Poniendo a Laravel trabajando 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 de ubuntu, comencé a recibir el error mcrypt. Esto después de muchas horas de prueba y error.
haciendo funcionar el comando artesanal
(si tiene un error mcrypt mientras utiliza la herramienta de línea de comandos de artesanos)
Hice muchas pruebas y errores, así que cada vez que ejecutaba el comando php5enmod antes, tenía mensajes de error. pero en la instalación nueva no hubo mensajes de error. Después de este paso conseguí el comando artesanal trabajando
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 de 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, limpie el caché de laravel y todo lo que funcione