php - mcrypt_encrypt - no se puede encontrar mcrypt=> Llamada a la función indefinida Laravel / mcrypt_create_iv()
mcrypt_get_iv_size (10)
Esto es lo que finalmente funcionó para mí:
brew reinstall --with-homebrew-curl --with-httpd php56
brew reinstall --build-from-source php56-mcrypt
También tuve que hacer sudo chmod 777 /usr/local/etc/php/5.6/conf.d
porque recibí errores cuando la segunda brew reinstall
intentó agregar ext-mcrypt.ini
a ese directorio.
Tratando de configurar Laravel y seguir siendo golpeado con este error. Instalé mcrypt a través de brew y está ubicado en / usr / local / Cellar. ¿Alguna idea? .. No aparece en el comando terminal php -m tampoco, si eso importa. Estoy ejecutando Mountaion Lion con el servidor web nativo de Mac.
Instalé php y mcrypt con Homebrew, pero todavía experimenté este error después de brew update
varias veces. Creo que mi configuración se ha vuelto un poco aburrida con el tiempo.
Resultó que mi php se estaba configurando desde /private/etc/php.ini , no /usr/local/etc/php/5.4/php.ini como recomienda Homebrew. Mcrypt ni siquiera se incluye desde /usr/local/etc/php/5.4/ext-mcrypt.ini, lo que no tiene mucho sentido, teniendo en cuenta que php -i
produce para mí:
Configuration File (php.ini) Path => /usr/local/etc/php/5.4
Loaded Configuration File => /usr/local/etc/php/5.4/php.ini
Scan this dir for additional .ini files => /usr/local/etc/php/5.4/conf.d
Additional .ini files parsed => /usr/local/etc/php/5.4/conf.d/ext-mcrypt.ini
Mi solución:
- Edite
/private/etc/php.ini
como superusuario - Agregue
extension="/usr/local/Cellar/php54-mcrypt/5.4.28/mcrypt.so"
y guarde - Reinicie Apache con
sudo apachectl restart
Instaló mcrypt
cuando realmente quería el php56-mcrypt
php.
Usted indicó en su pregunta que puede ver que mcrypt
instalado en /usr/local/Cellar
y que está usando OSX
. Entonces, la manera más fácil de instalar el módulo mcrypt PHP en OSX usando Homebrew es:
// assuming you have php56
brew install php56-mcrypt
Si homebrew no puede encontrar el paquete correcto, es posible que deba tocar los repositorios de PHP que se encuentran en GitHub :
brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php
Ahora cuando brew search mcrypt
el comando brew search mcrypt
, deberías ver algo como:
libtomcrypt mcrypt php53-mcrypt php54-mcrypt php55-mcrypt php56-mcrypt
Varios otros carteles han mencionado la necesidad de editar su archivo php.ini
. Esto será innecesario ya que homebrew se encargará de activar el módulo por usted. Coloca el archivo de configuración en /usr/local/etc/php/5.6/conf.d/ext-mcrypt.ini
No tiene instalada la extensión PHP de mcrypt.
Para una Mac, seguí estas instrucciones: coolestguyplanettech.com/… .
Se parecen mucho, pero no lo es, es muy fácil de seguir, ¡funciona!
Prueba sudo php5enmod mcrypt && sudo service apache2 restart
Puede haber instalado mycrypt pero no tener el módulo php_mcrypt instalado / habilitado.
Solo una nota para las personas que se actualizaron recientemente a PHP 7: la biblioteca MCRYPT ha quedado en deprecated . Si actualizaste a PHP 7 y ahora estás viendo este error, esa es la razón. Debe cambiar a una biblioteca alternativa, algunas alternativas se mencionan en este hilo .
Ubuntu o cualquier usuario de Linux basado en Debian puede instalar el paquete requerido con apt-get
:
sudo apt-get install php5-mcrypt
Recuerde reiniciar el servidor web después:
sudo service apache2 restart
Si aún no funciona, intente vincular el archivo de configuración a la carpeta de configuración adecuada para el servidor web. Gracias a dave1010 por esta pista en los comentarios.
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/apache2/conf.d/ # for Apache
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/cli/conf.d/ # for CLI
Y nuevamente, reinicie el servidor web:
sudo service apache2 restart
Quizás, si aún no está trabajando, también necesita la línea mostrada por @RahulPrasad, con php5enmod mcrypt
.
Vaya a la carpeta CLI en su instalación de php, y encuentre php.ini allí y habilite mcrypt. Terminal a veces usa otro php.ini, que generalmente está en la carpeta CLI.
También debe habilitarlo en su archivo php.ini
y probablemente reinicie Apache.
En php.ini
encontrará ;mcrypt.so
y eliminará ;
de eso.
O, si no está allí, solo agrega mcrypt.so
algún lugar.
Además, la opción de sal ha quedado obsoleta a partir de PHP 7.0.0. Ahora se prefiere simplemente usar la sal que se genera de manera predeterminada.