the - Instalación de la extensión mcrypt para PHP en OSX Mountain Lion
mcrypt php extension required mac (16)
sudo apt-get install php5-mcrypt
ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/fpm/conf.d/mcrypt.ini
servicio php5-fpm restart
service nginx restart
Disculpas de antemano por las posibles preguntas n00b, estoy tratando de instalar la extensión mcrypt para PHP en mi máquina OSX Mountain Lion.
Los siguientes pasos en la terminal es lo que he hecho hasta ahora para lograr mi instalación de PHP
cd /path/to/downloaded/php-5.3.21/ext/mcrypt/
/usr/bin/phpize
./configure
cd /path/to/downloaded/php-5.3.21
./configure --with-config-file-path=/private/etc/php.ini --with-apxs2=/usr/sbin/apxs
make
sudo make install
Lo cual parece funcionar bien e instala PHP 5.3.21 bien. Entonces he hecho
sudo nano /private/etc/php.ini
E incluido
extension=mcrypt.so
Junto con un reinicio de Apache, phpinfo () no muestra que la extensión mcrypt está cargada.
Luego intenté especificar el archivo extension_dir dentro de php.ini, nuevamente sin suerte.
he hecho
locate mcrypt.so
/opt/local/lib/php/extensions/no-debug-non-zts-20090626/mcrypt.so
/usr/local/Cellar/php53-mcrypt/5.3.18/mcrypt.so
Y probé ambos directorios como el extension_dir, sin suerte.
También he intentado lo siguiente, después de mucho googlear
./configure --with-config-file-path=/private/etc/php.ini --with-apxs2=/usr/sbin/apxs --with-mcrypt
Lo cual parece funcionar bien, pero luego al "hacer", regresa
ext/mcrypt/mcrypt.o: No such file or directory
ext/mcrypt/mcrypt_filter.o: No such file or directory
De nuevo, sin éxito.
¿Qué estoy haciendo mal? Parece que la compilación física de mcrypt.so no está sucediendo, o se está compilando incorrectamente, ya que sospecho que hay otra mcrypt.so encontrada en locate.
¿Alguien por favor ayuda? ¡He recorrido páginas y páginas de búsquedas de Google sin suerte!
Instalando mcrypt
sin el uso de port
o brew
Nota: estas instrucciones son largas porque pretenden ser minuciosas. El proceso es bastante directo. Si eres optimista, puedes saltar a la sección de construcción de la extensión mcrypt , pero es muy posible que veas los errores que hice y me
libmcrypt
primero instaleautoconf
ylibmcrypt
.
Acabo de pasar por esto en una nueva instalación de OSX 10.9. La solución que funcionó para mí fue muy similar a la de ckm . Estoy incluyendo sus pasos y los míos en su totalidad, para completar. Mi objetivo principal (aparte de "tener mcrypt
") era realizar la instalación de una manera que dejara el menor impacto en el sistema como un todo. Eso significa hacer cosas manualmente (sin port
, sin brew
)
Para hacer cosas manualmente, primero necesitará un par de dependencias: una para construir módulos PHP, y otra para mcrypt
específicamente. Estos son autoconf
y libmcrypt
, cualquiera de los cuales ya podría tener, pero ninguno de los cuales tendrá en una nueva instalación de OSX 10.9.
autoconf
Autoconf (a falta de una mejor descripción) se usa para decir sistemas no muy dispares, pero aún muy diferentes, de cómo compilar cosas. Te permite usar el mismo conjunto de comandos básicos para compilar módulos en Linux como lo harías en OSX, por ejemplo, a pesar de sus diferentes jerarquías de sistema de archivos, etc. Utilicé el método descrito por Ares en , que reproduciré aquí. por completitud. Este es muy directo:
$ mkdir -p ~/mcrypt/dependencies/autoconf
$ cd ~/mcrypt/dependencies/autoconf
$ curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-latest.tar.gz
$ tar xzf autoconf-latest.tar.gz
$ cd autoconf-*/
$ ./configure --prefix=/usr/local
$ make
$ sudo make install
A continuación, verifique la instalación ejecutando:
$ which autoconf
que debería devolver /usr/local/bin/autoconf
libmcrypt
A continuación, necesitará libmcrypt
, que se utiliza para proporcionar las agallas de la extensión mcrypt
(la extensión misma es una provisión de una interfaz PHP en esta biblioteca). El método que utilicé se basó en el que se describe here , pero he intentado simplificar las cosas lo mejor que puedo:
Primero, descargue el libmcrypt
fuente de libmcrypt
, disponible de SourceForge , y disponible al momento de escribir este documento, específicamente, en:
http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2/download
Tendrá que saltar a través de los aros estándar de SourceForge para obtener el enlace de descarga real, pero una vez que lo tiene, puede pasarlo a algo como esto:
$ mkdir -p ~/mcrypt/dependencies/libmcrypt
$ cd ~/mcrypt/dependencies/libmcrypt
$ curl -L -o libmcrypt.tar.bz2 ''<SourceForge direct link URL>''
$ tar xjf libmcrypt.tar.bz2
$ cd libmcrypt-*/
$ ./configure
$ make
$ sudo make install
La única forma que conozco para verificar que esto ha funcionado es a través del paso ./configure
para la extensión mcrypt
(a continuación)
construyendo la extensión mcrypt
Este es nuestro objetivo real. Esperemos que la breve temporada en el infierno de la dependencia haya terminado ahora.
Primero, necesitaremos obtener el código fuente de la extensión mcrypt
. Esto está más fácilmente disponible enterrado dentro del código fuente para todo PHP. Entonces: determine qué versión del código fuente de PHP necesita.
$ php --version # to get your PHP version
ahora, si tiene suerte, su versión actual estará disponible para su descarga desde las réplicas principales. Si es así, puede escribir algo como:
$ mkdir -p ~/mcrypt/php
$ cd ~/mcrypt/php
$ curl -L -o php-5.4.17.tar.bz2 http://www.php.net/get/php-5.4.17.tar.bz2/from/a/mirror
Desafortunadamente, mi versión actual (5.4.17, en este caso) no estaba disponible, así que necesitaba usar los enlaces alternativos / históricos en http://downloads.php.net/stas/ (también un sitio oficial de descarga de PHP). Para estos, puedes usar algo como:
$ mkdir -p ~/mcrypt/php
$ cd ~/mcrypt/php
$ curl -LO http://downloads.php.net/stas/php-5.4.17.tar.bz2
Nuevamente, basado en su versión actual.
Una vez que lo tiene, (y todas las dependencias, desde arriba), puede acceder al proceso principal de realmente construir / instalar el módulo.
$ cd ~/mcrypt/php
$ tar xjf php-*.tar.bz2
$ cd php-*/ext/mcrypt
$ phpize
$ ./configure # this is the step which fails without the above dependencies
$ make
$ make test
$ sudo make install
En teoría, mcrypt.so
ahora está en su directorio de extensiones PHP. A continuación, debemos contarle a PHP sobre esto.
configurando la extensión mcrypt
Su archivo php.ini
necesita que le digan que cargue mcrypt
. De forma predeterminada en OSX 10.9, en realidad tiene información de configuración específica de mcrypt
, pero en realidad no activa mcrypt
menos que se lo indique.
El archivo php.ini
no existe, por defecto. En su lugar, el archivo /private/etc/php.ini.default
enumera la configuración predeterminada y se puede utilizar como una buena plantilla para crear el php.ini
"verdadero", si no existe.
Para determinar si php.ini
ya existe, ejecute:
$ ls /private/etc/php.ini
Si hay un resultado, ya existe, y debe omitir el siguiente comando.
Para crear el archivo php.ini
, ejecute:
$ sudo cp /private/etc/php.ini.default /private/etc/php.ini
Luego, debes agregar la línea:
extension=mcrypt.so
En algún lugar en el archivo. Recomendaría buscar en el archivo ;extension=
, y agregarlo inmediatamente antes de la primera aparición.
Una vez hecho esto, la instalación y la configuración están completas. Puedes verificar que esto funcionó al ejecutar:
php -m | grep mcrypt
Que debería dar salida a " mcrypt
", y nada más.
Si su uso de PHP depende del httpd
de Apache, deberá reiniciarlo antes de que note los cambios en la web. Puedes hacerlo a través de:
$ sudo apachectl restart
Y tu estas listo.
Por qué estás recibiendo este error
PHP se queja si uno de los archivos como mcrypt.so
se incluye usando la sintaxis extension="mcrypt.so"
pero el archivo no está en la ruta extension_dir
(use <?php phpinfo(); ?>
O php -i
para verificar que )
También le indicará qué archivo de configuración de php.ini
se está cargando para que sepa de dónde provienen las configuraciones. Lo más probable es que sea algo como /usr/local/etc/php/5.4/php.ini
si está utilizando la versión homebrew.
Tome nota de la parte debajo que dice algo como "Escanee este directorio para archivos .ini adicionales" porque lo que significa es que le da un lugar para poner su propio archivo, como tweaks.ini
que se carga después del archivo de configuración principal, por lo que puede hacer cambios y mantenerse al día con ellos fácilmente. También recuerde que todos los archivos en este directorio se cargan en orden alfabético, por lo que si tiene uno llamado mcrypt
que contiene directivas mcrypt
, y hay un mcrypt.ini
, lo más probable es que su configuración se anule.
Una alternativa para especificar extension="mcrypt.so"
es especificar la ruta completa al archivo mcrypt.so
. La otra opción es editar la configuración extension_dir
.
Lo que funcionó para mí
En Mavericks no tuve que hacer tampoco. Hice una nueva instalación de homebrew
y luego agregué el toque de josegonzalez usando:
brew tap josegonzalez/homebrew-php
(Mi otra computadora portátil estaba ejecutando Mountain Lion y también estaba utilizando homebrew en esta configuración).
Después de que hayas tocado ese impresionante repositorio , puedes instalar php
y mcrypt
usando algo como:
brew install php54 php54-mcrypt
¿Qué pasa si esto no funciona (y por qué debería usar homebrew de todos modos?)
Recomiendo probar esta ruta antes de descargarla y compilarla desde la fuente. No es difícil construir desde la fuente, pero no quiero tener que mantener eso. En primer lugar, es una de las razones para usar homebrew
: es un administrador de paquetes (con una comunidad ENORME).
Hay mucho desarrollo en el proyecto homebrew
y, si tiene problemas, le sugiero que revise su página de problemas
Así que sí, puedes construirlo desde la fuente y eso podría parecer una buena opción en este momento si solo quieres que mcrypt funcione, pero es posible que te odies por hacer esto más tarde ...
Si no quieres usar php54
también está la rama php53
. Tienen algunas instrucciones en el repositorio sobre cómo usar ambas / cambiar entre ellas.
Si eres nuevo en homebrew, debes saber que verificas qué más está disponible usando brew search php54
, que da algo como:
php54 php54-lzf php54-snappy
php54-amqp php54-mailparse php54-solr
php54-apc php54-mcrypt php54-ssh2
php54-apcu php54-memcache php54-stats
php54-boxwood php54-memcached php54-svm
php54-chdb php54-midgard2 php54-tidy
php54-couchbase php54-mongo php54-timezonedb
php54-dbase php54-msgpack php54-tokyotyrant
php54-ev php54-mysqlnd_ms php54-twig
php54-gearman php54-oauth php54-uploadprogress
php54-geoip php54-opcache php54-uuid
php54-gmagick php54-parsekit php54-varnish
php54-graphdat php54-pcntl php54-wbxml
php54-http php54-pdflib php54-xcache
php54-igbinary php54-phalcon php54-xdebug
php54-imagick php54-proctitle php54-xhgui
php54-inclued php54-pspell php54-xhp
php54-intl php54-pthreads php54-xhprof
php54-ioncubeloader php54-raphf php54-xmldiff
php54-jsmin php54-redis php54-yac
php54-judy php54-riak php54-yaf
php54-leveldb php54-runkit php54-yaml
php54-libevent php54-scrypt php54-yaz
php54-libvirt
TLDR
- Debes usar
homebrew
para instalarmcrypt
si es posible - Si obtiene errores, probablemente se deba a que sus archivos de configuración están en mal estado. Compruebe la ruta del
extension_dir
ymcrypt.so
dónde está el archivomcrypt.so
y vea si hay una discrepancia (o especifique la ruta completa)
Acabo de pasar por esto en Mountain Lion. Homebrew bloqueó en libiconv, que pensó que faltaba, pero que en realidad estaba actualizado. Después de una hora de tratar de que reconozca libiconv, me di por vencido y lo instalé a la vieja usanza, lo que me llevó los cinco minutos ...
(download your php version)
$ wget http://www.php.net/get/php-5.3.21.tar.gz/from/a/mirror
$ tar -xvzf php-5.3.21.tar.gz
$ cd php-5.3.21/ext/mcrypt
$ phpize
$ ./configure
$ make
$ make test
$ sudo make install
mcrypt.so ahora está en su directorio ext de PHP ( /usr/lib/php/extensions/no-debug-non-zts-20090626/
en mi caso), ahora necesita agregar a php.ini como un módulo
$ vi /etc/php.ini
$ (insert) extension=mcrypt.so
$ sudo apachectl restart
Hecho: no es necesario preparar cerveza. HTH alguien.
Así que después de ejecutar brew install mcrypt php
, tuve que instalar php-mcrypt a través de pecl:
pecl install mcrypt-1.0.1
Al momento de escribir, mcrypt no tiene una versión pecl estable, 1.0.1 es la versión actual para php 7.2 y 7.3, y brew install php
instalará php 7.2.
Con los cambios recientes en brew (deprecation of homebrew / php) ahora instala php con mcrypt con lo siguiente.
brew install [email protected] -with-mcrypt=mcrypt
Puede que tenga que desinstalar las instalaciones previas de php
Crearía un script de shell para instalar el módulo mcrypt para PHP 5.3 sin homebrew.
Los scripts instalan php autoconf si es necesario y compilan el módulo para su versión de php.
El enlace está aquí: https://gist.github.com/lucasgameiro/8730619
Gracias
Esto es lo que hice:
$ wget http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download
$ tar xzvf libmcrypt-2.5.8.tar.gz
$ ./configure
$ make
$ sudo make install
$ brew install autoconf
$ wget file:///Users/rmatikolai/Downloads/php-5.4.24.tar.bz2
$ tar xjvf php-5.4.24.tar.bz2
$ cd php-5.4.24/ext/mcrypt
$ phpize
$ ./configure # this is the step which fails without the above dependencies
$ make
$ make test
$ sudo make install
$ sudo cp /private/etc/php.ini.default /private/etc/php.ini
$ sudo vi /private/etc/php.ini
Luego, debes agregar la línea:
extension=mcrypt.so
$ sudo apachectl restart
La solución con cerveza solo funcionó después de lo siguiente: en su php.ini
nano /private/etc/php.ini
agregue esta línea:
extension="/usr/local/Cellar/php53-mcrypt/5.3.26/mcrypt.so"
¡Advertencia! Establezca la versión de PHP correcta.
Nada funcionó y finalmente lo hizo funcionar usando resource @ Here and Here ; Solo recuerde que para OSX Mavericks (10.9) debería usar PHP 5.4.17 o fuente estable de PHP 5.4.22 para compilar mcrypt. Php Source 5.4.22 aquí
Otra posibilidad para aquellos que desean mantener OS X lo más limpio posible, es usar vagrant [1] para definir un entorno de desarrollo php. Vagrant puede usar VirtualBox [2] en modo sin cabeza (~ 3% de CPU en mi 13-inch, Mid 2009 MacBook Pro) para ejecutar una máquina virtual con el servidor web y php y todo.
Para crear fácilmente el entorno vagabundo, puede utilizar esta gran herramienta https://puphpet.com/
Para mí, en Yosemite
$ brew install mcrypt php56-mcrypt
reiniciar la computadora
Hizo el truco.
Tiendo a usar Homebrew en Mac. Instalará y configurará todo para usted.
http://mxcl.github.com/homebrew/
Entonces deberías poder instalarlo con brew install mcrypt php53-mcrypt
y solo funcionará (tm).
Puede reemplazar el 53
con la versión de PHP que esté utilizando, como php56-mcrypt
o php70-mcrypt
. Si no está seguro, use brew search php
.
También recuerde que si está utilizando el PHP incorporado de Mac que está instalado en /usr/bin
, puede ver qué php está usando con which php
en el terminal y devolverá la ruta.
Yo recomendaría instalar todo a través de homebrew si tienes la opción. Fui en círculos por un tiempo, pero la instalación de php 5.x a través de brew y luego los módulos necesarios funcionó una delicia. Estaba trabajando con php 5.4 y lo usé para comenzar:
https://github.com/josegonzalez/homebrew-php
y luego instalé los módulos adicionales con:
brew install php54-redis
brew install php54-xdebug
brew install php54-mcrypt
...
mycrypt.o y mcrypt_filter.o están en ext / .libs de su directorio descargado de php. Simplemente copie los archivos a ext / mcrypt, luego ejecute make && make install nuevamente.
La solución de base de cerveza funcionó para mí
Instala estos paquetes
$ brew install brew install mcrypt php54-mcrypt
Copie php.ini.default por defecto a php.ini
$ sudo cp /private/etc/php.ini.default /private/etc/php.ini
Agregue esta línea a la sección de extensión de archivo php.ini - verifique la ruta de extensión con la ubicación de instalación en su máquina
extension = "/ usr / local / Cellar / php54-mcrypt / 5.3.26 / mcrypt.so"
Reinicie su servidor Apache
$ apache restart