Instalación de PHP en macOS con M1 e Intel usando Homebrew

Clase 6 de 23Curso Básico de PHP: Instalación, Fundamentos y Operadores

Resumen

Debido a que Apple ahora fabrica ordenadores basados en el chip M1 (anteriormente basadas solo en Intel), la forma de instalar y configurar PHP en macOS puede variar un poco.

Previo a la instalación de PHP asegúrate de tener instalado Homebrew, si no lo tienes puedes revisar esta clase del curso de prework para entornos macOS. Este es un manejador de paquetes para macOS y que nos será de gran utilidad para esta ocasión.

Instalación de PHP mediante HomeBrew

Será necesario tener el paquete curl instalado, pues nos va a permitir hacer descargas de internet.

brew install curl

Un servidor Apache para macOS

Lo siguiente es instalar un servidor con el cual ejecutar PHP. El más conocido es Apache; sin embargo, existe otro igual de funcional llamado httpd. Junto a este también instalaremos las versiones de PHP específicas que deseemos, las cuales serán la 8.1 y 7.4.

brew install httpd php@8.1 php@7.4

Como observaste podemos instalar una o más versiones del lenguaje. Para comprobar si tenemos instalado podemos ejecutar el siguiente comando:

php --version

Desvinculando la versión PHP por defecto

Algunas computadoras macOS ya traen PHP por defecto, en especial las que usan un procesador Intel. No obstante, esta versión instalada no es la recomendable, por ello es mejor desvincularla para cambiarla por la versión que deseemos y tengamos instalado:

brew unlink php

Ahora vinculemos la versión que queremos usar:

brew link --force php@8.1

Configuraciones básicas

La versión de PHP que hemos instalado está en la terminal, más no aún en el servidor web que alojara PHP (httpd en este caso el cual es similar a Apache). Para ello debemos realizar algunas modificaciones en un archivo llamado httpd.config cuya ruta varía según el tipo de procesador:

  • Ubicación en Intel: /usr/local/etc/httpd/httpd.conf
  • Ubicación en M1: /opt/homebrew/etc/httpd/httpd.conf

Para hacer los cambios puedes utilizar cualquier editor. El elegido en esta ocasión será Visual Studio Code.

sudo code /opt/homebrew/etc/httpd/httpd.conf

Una vez ejecutado el comando anterior, se abrirá el editor con el archivo httpd.config lleno de configuraciones. Para buscar específicamente una palabra podemos realizar la combinación de teclas Command + f para que nos abra un pequeño buscador. Ahora editamos el archivo httpd.config:

  • Indiquemos que el puerto por el cual debe funcionar nuestro servidor web sea el 80:

    Listen 80
    
  • Para indicar el lugar donde guardaremos y ejecutaremos nuestros proyectos PHP, editemos la ruta que se encuentren en DocumentRoot y Directory para colocar la ubicación de la carpeta que deseemos:

    DocumentRoot "/Users/retaxmaster/Documents/projects"
    
    <Directory "/Users/retaxmaster/Documents/projects">
    
  • Cambiamos la configuración AllowOverride de None a All

    AllowOverride All
    
  • Para habilitar el módulo de PHP tenemos que insertar una línea de configuración que cambia según el tipo de procesador:

    • Si es basada en Intel: LoadModule php_module /usr/local/opt/php/lib/httpd/modules/libphp.so
    • Si es basada en M1: LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so

    El servidor web (httpd) necesita saber la ubicación del archivo libphp.so para poder interpretar correctamente PHP. Cabe decir que puedes indicar una versión en específica de PHP, por ejemplo (para M1) indiquemos que la configuración sea para la versión 8.1:

    LoadModule php_module /opt/homebrew/opt/php@8.1/lib/httpd/modules/libphp.so 
    
  • Debemos descomentar la opción rewrite_module, en caso de ya estarlo, déjalo como estaba

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
  • Para que nuestro servidor httpd pueda reconocer los archivos índice debemos especificarle mediante la opción DirectoryIndex. Indiquemos que esos archivos serán el index.php e index.html:
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

Ejecutando PHP

Reiniciemos los servicios de PHP:

brew services restart php

Iniciemos nuestro servidor web:

sudo apachectl -k start

¡Listo! Ya puedes ejecutar tus archivos PHP. Para verificarlo podemos ir al navegador y visitar la ruta localhost:
Ruta localhost en el navegador

Si tienes alguna alerta u error en la terminal o navegador cuando intentas correr el servidor httpd es probable que no se haya establecido el ServerName como localhost dentro de la configuración de httpd.conf:

ServerName localhost

Debería estar configurado con el nombre de localhost y así cuando visitemos esa ruta en el navegador se ejecute el archivo índice que se encuentre en el DirectoryIndex.

Contribución creada por: Martín Álvarez

Ubicación del archivo httpd.conf:

  • Ubicación en Intel: sudo nano /usr/local/etc/httpd/httpd.conf
  • Ubicación en M1: sudo nano /opt/homebrew/etc/httpd/httpd.conf

Módulo de libphp.so:

  • Para Intel: LoadModule php_module /usr/local/opt/php/lib/httpd/modules/libphp.so
  • Para M1: LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so