Actualización de la instalación nativa de PHP en OS X Mountain Lion

Veamos cómo podemos actualizar manualmente la instalación nativa de PHP para OS X 10.8 a la versión más reciente (actualmente 5.4.5) y obtener algún otro software útil instalado mientras estamos en ello. * Los paquetes de AMP son prácticos, pero rara vez están actualizados, por lo que absorber el procedimiento descrito en este artículo es invaluable para todos los desarrolladores de PHP.


La teoría de la construcción desde la fuente

Si solo está interesado en el aspecto práctico de la instalación de PHP, siéntase libre de omitir esta sección, pero puede ser útil para usted más adelante saber cómo funciona realmente y por qué ciertos comandos son necesarios..

Cada instalación de software desde el origen sigue básicamente la misma cadena de comandos: descargue los archivos de origen, configure, haga, pruebe opcionalmente, instale.

Configurar

El script "configure" le dice a "make" lo que se va a construir. Ejecutado al escribir "./configure", el script de configuración analiza las dependencias, verifica que está ejecutando un sistema operativo compatible, configura los archivos necesarios para el sistema operativo dado y, finalmente, genera un makefile, que cuando se llama "make", dicta cómo y ¿Qué es exactamente lo que se construirá?.

"Configurar" le dice a "hacer" lo que se va a construir

Si el script de configuración encuentra dependencias o errores que faltan, realiza una salida y detiene la ejecución, lo que permite al usuario eliminar o solucionar cualquier obstáculo antes de continuar. El comando de configuración siempre viene primero cuando se construye desde la fuente.

Hacer

A continuación, "make" construye lo que la configuración le dijo que construyera. "Make" se inicializa simplemente escribiendo "make", y en realidad es una utilidad GNU que generalmente se usa para mantener un conjunto de archivos y recompilarlos si es necesario.

"Make" construye lo que configure le dijo que construyera

Para funcionar, se requiere un archivo make: un archivo en el que se describen sus directivas y se anotan las relaciones entre los archivos en cuestión. Una vez ejecutado, el comando make lee el makefile y realiza las tareas.

El comando "make test" ejecuta el comando make, pero también prueba la compilación contra un objetivo de prueba. No todas las distribuciones de origen admiten "make test", por lo que, a menos que se especifique explícitamente en la documentación de instalación del software que se está instalando, una es usar el "make" habitual.

El comando "make test" ejecuta el comando make pero también prueba la compilación contra un objetivo de prueba.

"Sudo make install" instala los archivos que "make" está integrado en carpetas predefinidas. Maneja todas las inclusiones, actualiza y resuelve las rutas y mueve todo hacia donde debería estar. Efectivamente, finaliza la instalación y el usuario normalmente no necesita hacer nada más..

En realidad, esto es exactamente lo que puede hacer Homebrew, el administrador de paquetes que instalamos en la siguiente sección. Puede ejecutar el mismo flujo, internamente. Realmente no ve nada de eso directamente, pero más o menos se ejecuta la misma cadena, si la "fórmula" presentada por el "cervecero" se hace de esa manera.

Hace que todo el proceso sea menos engorroso al verificar automáticamente las dependencias e instalarlas antes de pasar al paquete principal designado. Luego lo descarga y lo desarchiva y ejecuta la configuración, make, make install chain para finalizar la instalación..

Casi todas las instalaciones de origen siguen los mismos pasos: descargar, configurar, hacer, instalar.

Homebrew


De Homebrew a casa

Para que la instalación de PHP se realice de la mejor manera posible, necesitamos instalar Homebrew, un administrador de paquetes para OSX que puede manejar muchas instalaciones para usted, instalaciones que de otro modo podrían requerir procedimientos de compilación complejos y pueden tener dependencias críticas que requieren horas para resolver.

Tener Homebrew instalado te beneficiará a largo plazo.

Tener Homebrew instalado te beneficiará a largo plazo, no solo para el propósito de este artículo. Ofrece una manera rápida de instalar bibliotecas y software comunes sin tener que compilar desde la fuente.
Para instalarlo, debemos hacer lo siguiente (omita esta sección si tiene Homebrew instalado):

  1. Instale XCode a través de la tienda de aplicaciones. Una vez instalado, instale Command Line Tools a través de la aplicación XCode, o descargue e instale desde http://developers.apple.com. Necesitamos XCode y CLT porque Homebrew los requiere.
  2. Instala X11 desde aquí. Este es también un requisito de Homebrew. Elija la última versión disponible, no necesariamente la que está vinculada aquí.
  3. Instalar Homebrew de GitHub.
  4. Si tiene problemas, es posible que tenga que hacer lo siguiente después de los pasos 1 y 2:
     $ sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer $ ln -s / opt / X11 / usr / X11

    ... tomado de este post. Esto sucede en algunos casos de Mountain Lion por alguna razón..

Una vez hecho esto, ejecute brew doctor y verifique que todo funcione (según las instrucciones en el sitio web de Homebrew).


PHP

Como era de esperar, la instalación de PHP requiere que tengas ciertas bibliotecas instaladas. Por suerte, Homebrew está aquí para manejar estas instalaciones por nosotros. Instala lo siguiente:

 brew install libjpeg brew install pcre brew install libxml2 brew install mcrypt

Una vez hecho esto, descargue los archivos fuente PHP desde Php.net. Desempaquete el archivo, abra su terminal y cambie a la carpeta de origen (por ejemplo, cd ~ / Downloads / php-5.4.5 / o donde sea que haya descargado las fuentes).

Si planea trabajar con Zend Framework 2 y desea comenzar con la aplicación de esqueleto de muestra realizada por Rob “Akrabat” Allen, o si desea implementar su aplicación en varios idiomas, necesita soporte php-intl. Para permitir que el script de configuración tenga en cuenta php-intl al construir el archivo make, necesitamos instalar otra dependencia: ICU. Descargue esto de ICU-Project.org y ejecute:

 tar xzvf icu4c-4_8_1-src.tgz cd icu / source ./runConfigureICU MacOSX make sudo make install

Esto manejó todas las dependencias básicas que PHP podría querer de nosotros (por ahora). Ahora podemos finalmente construirlo e instalarlo..

Instalación

Primero, mientras esté en la carpeta fuente no archivada de PHP, ejecute el siguiente comando de configuración:

 ./ configure \ --prefix = / usr \ --mandir = / usr / share / man \ --infodir = / usr / share / info \ --sysconfdir = / private / etc \ --with-apxs2 = / usr / sbin / apxs \ --enable-cli \ --with-config-file-path = / etc \ --with-libxml-dir = / usr \ --with-openssl = / usr \ --with-kerberos = / usr \ --with-zlib = / usr \ --enable-bcmath \ --with-bz2 = / usr \ --enable-calendar \ --with-curl = / usr \ --enable-dba \ --enable -exif \ --enable-ftp \ --with-gd \ --enable-gd-native-ttf \ --with-icu-dir = / usr \ --with-iodbc = / usr \ --with-ldap = / usr \ --with-ldap-sasl = / usr \ --with-libedit = / usr \ --enable-mbstring \ --enable-mbregex \ --with-mysql = mysqlnd \ --with-mysqli = mysqlnd \ --without-pear \ --with-pdo-mysql = mysqlnd \ --with-mysql-sock = / var / mysql / mysql.sock \ --with-readline = / usr \ --enable-shmop \ --with-snmp = / usr \ --enable-soap \ --enable-sockets \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --with-tidy \ --enable-wddx \ --with-xmlrpc \ --with-iconv-dir = / usr \ --with-xsl = / usr \ --enable-zip \ --with-imap = / usr / local / imap-2007 \ --with-kerberos \ --with-imap-ssl \ --enable-intl \ --with-pcre-regex \ --with-pgsql = / usr \ --with-pdo-pgsql = / usr \ - -with-freetype-dir = / usr / X11 \ --with-jpeg-dir = / usr \ --with-png-dir = / usr / X11

Una vez hecho esto, ejecute

$ hacer prueba

”Make test” ejecuta make y prueba las compilaciones en busca de errores

Como se mencionó en la sección sobre teoría de compilación, esto ejecuta make y prueba la compilación. Esto puede llevar un tiempo, hasta 30 minutos, porque se está probando cada faceta de PHP. Cuando haya terminado, si PHP encontró algún error (y probablemente lo hará), informe a los desarrolladores siguiendo las instrucciones en pantalla. No se preocupe, todo sigue bien, los errores que encuentra son generalmente menos importantes.


Como puede ver, se realizarán unas 11503 pruebas. Esto tomará un rato.

Si ya tiene el PHP original activado y configurado, haga una copia de seguridad de su archivo php.ini ahora. Debería estar en /etc/php.ini

Finalmente, ejecute lo siguiente para instalar PHP en realidad.

$ sudo make install

Es mejor no sobrescribir el nuevo archivo php.ini con el anterior si realizó una copia de seguridad. En su lugar, copie los valores que necesita manualmente, para mantenerse seguro, de esa manera nos aseguraremos de que el nuevo archivo php.ini sea totalmente compatible con la versión recién instalada.


Configuracion apache

¡Casi terminado! Si ya habías activado PHP en tu máquina antes de esto y el único propósito de leer este artículo era en realidad actualizar el PHP existente, entonces has terminado: todo debería funcionar.

Si no, sin embargo, necesitamos habilitar PHP en la instalación nativa de Apache de OSX. Dado que el archivo httpd.conf probablemente estará en la ubicación predeterminada, ábralo a través de Terminal en TextEdit así:

$ SUDO_EDITOR = "abrir -FWne" sudo -e /etc/apache2/httpd.conf

Estoy usando el comando SUDO EDITOR aquí para abrir el archivo en TextEdit, simplemente porque considero que es mucho más fácil editar archivos que Vim o Nano. También podría haber usado "$ sudo vim /ect/apache2/httpd.conf" para editarlo en vim.

A continuación, elimine el comentario de las siguientes líneas (no están una al lado de la otra; use el comando Buscar para ubicarlas)

 LoadModule php5_module libexec / apache2 / libphp5.so Incluye /private/etc/apache2/extra/httpd-vhosts.conf

La primera línea activa el uso de PHP como un módulo de Apache. La segunda línea está allí, de modo que el archivo principal httpd.conf (configuración de Apache) recopila los hosts virtuales del archivo vhosts y nos ahorra el problema de una edición excesiva en el httpd.conf demasiado sensible. Esto tiene la ventaja adicional de permitirle guardar un archivo vhosts en algún lugar fuera de / etc, y hacer una copia de seguridad para otras máquinas de desarrollo o reinstalaciones.

Un enfoque muy práctico para esto es alojarlo en un servicio en la nube como Google Drive o Dropbox y enlazarlo directamente desde httpd.conf. De esa manera, cuando agrega un nuevo host virtual, se instala automáticamente en cada una de sus máquinas tan pronto como reinicia el servidor Apache local..


Añadiendo un Vhost y envolviendo

Un host virtual es un dominio imaginario alojado localmente. Básicamente, te permite probar tus proyectos en el navegador ingresando diferentes URL. Por ejemplo, en mi máquina, podría visitar http: //mactuts.tutorial y ver la aplicación Hello World con la que termina esta sección, o podría visitar http://mw.dev para ver la versión de desarrollo de un proyecto en el que estoy trabajando en. En pocas palabras, una URL diferente activa una carpeta de origen diferente y abre un proyecto diferente como un sitio web. Aquí hay una guía rápida sobre cómo agregar un host virtual: si ya tiene vhosts configurados o entiende todo sobre ellos, no dude en omitir esta sección..

Paso 1: Edición del archivo hosts

Primero, nombraremos nuestro ejemplo vhost "mactuts.tutorial". Para hacer esto, agregue una entrada en / etc / hosts que se vea así:

 127.0.0.1 mactuts.tutorial

Esto significa que acceder a la url http: //mactuts.tutorial en el navegador irá a 127.0.0.1:80 o, en otras palabras, al puerto 80 de nuestro servidor local (Apache).


Este es un ejemplo de archivo hosts. Note que también tengo algunos otros hosts virtuales configurados en esta máquina

Paso 2: Añadir un apache vhost

A continuación, agregue un bloque a etc / apache2 / extra / httpd-vhosts.conf que se parece a esto:

  ServerName mactuts.tutorial DocumentRoot "/ Users / USERNAME / Sites / mactuts" ServerAdmin [email protected]  Índices de opciones FollowSymLinks AllowOverride All Order allow, deny Allow de all  

Reemplace USERNAME con su propio nombre de usuario, sin las llaves. Esto le dice a Apache lo siguiente: Si tiene algo en el puerto 80, verifique su nombre de URL original. Si es mactuts.tutorial, entonces configure todas esas opciones.

Paso 3: Reiniciar apache

A continuación, reinicie Apache con

 reinicio de apachectl de $ sudo

Etapa 4: Crear el archivo de índice

3) Cree la carpeta "/ Users / USERNAME / Sites / mactuts" (naturalmente, reemplace USERNAME con el nombre de usuario de su OSX) y coloque un archivo index.php con el siguiente contenido:

 

Paso 5: Echale un vistazo!

Vaya a http: //mactuts.tutorial. Deberías ver "Hola mundo"!


Alternativas

Recientemente, apareció una alternativa a este enfoque: instalar PHP a través del propio Homebrew. El problema es que no hay canales oficiales en el momento de escribir este artículo (a principios de agosto de 2012), por lo que es necesario activar un toque alternativo para Homebrew.

Además, la versión OS X en la que probé esto, Mountain Lion, desafortunadamente no se pudo instalar de esa manera y me arrojó errores vagos que no pude resolver. Si te sientes aventurero, revisa esta publicación e intenta modificarla de acuerdo con tu propio sistema operativo y la versión de PHP deseada..

Una alternativa más estable parece estar disponible aquí, pero la retroalimentación es laxa y no hay mucho para continuar, así que dejaré estos métodos a la experimentación de los lectores..

Actualizaciones

Aquí hay algunas alternativas sugeridas por los comentaristas desde que se publicó la publicación..

php_osx
Otra alternativa (aparentemente suave) a esto fue traída a mi atención por el comentarista DaftViking e incluye la instalación de PHP a través de php_osx.

Macports
Aunque aliento la eliminación de Macports en favor de Homebrew, parece que Macports también agregó una versión estabilizada de PHP, por lo que podría proporcionar otra alternativa de trabajo. Personalmente no he probado este enfoque, pero para aquellos expertos en Macports, puede encontrar más información aquí. Gracias a Redditor nemeth88 por el heads-up.!


Conclusión

OS X viene con una configuración preinstalada de PHP y Apache. Lamentablemente, la versión de PHP con la que viene está muy desfasada, y nunca se actualiza, excepto cuando se está instalando una nueva versión del sistema operativo. Para entonces, la nueva versión de PHP incluida ya está desactualizada, así que además de obtener un paquete * AMP (Apache / Mysql / Php) (que rara vez, si alguna vez, tiene versiones actualizadas de PHP), ¿qué podemos hacer? excepto actualizarlo manualmente?

En este tutorial hemos cubierto los conceptos básicos de compilación a partir de la fuente, hemos creado una nueva versión actualizada de PHP y la hemos instalado, e incluso hemos instalado Homebrew que hará que las instalaciones de software y bibliotecas sean más fáciles. . También cubrimos la creación de un host virtual y probamos nuestra instalación para asegurarnos de que funciona. Espero que lo hayas disfrutado y que todo haya funcionado como estaba previsto. Si tiene problemas, no dude en publicar en los comentarios y trabajaremos juntos en los problemas..