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 [email protected] [email protected]
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 [email protected]
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
:
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
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?