Instalación de PHP en macOS - Resumen
Para este proceso debemos tener instalado previamente el sistema de gestión de paquetes Homebrew. Siempre es bueno mantenerlo actualizado, para ello ejecutamos en la terminal:
// Primero
brew update
// Después
brew upgrade
Después procedemos a instalar CURL:
brew install curl
Luego instalamos HTTPD y PHP:
brew install httpd php@8.1 php@7.4
Atención: aquí estamos instalando dos versiones de PHP, aunque podemos instalar solamente una versión.
Una vez instalado PHP procedemos a desvincular la versión que nuestra Mac trae por defecto:
brew unlink php
Ahora vinculamos la versión más reciente que tenemos o bien la versión que necesitemos:
brew link --force php@8.1
Comprobamos la versión de PHP que tenemos instalada:
php --version
Ahora vamos a editar algunos archivos de Apache. Se debe tener en cuenta si nuestra Mac es Intel o M1 pues las rutas de los archivos cambian en cada caso. Las rutas son las siguientes:
Ubicación del archivo httpd.conf:
- Ubicación en Intel:
/usr/local/etc/httpd/httpd.conf
- Ubicación en M1:
/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
Nota: en php debemos agregar la versión que instalamos, en mi caso la ruta quedó así: LoadModule php_module /usr/local/opt/php@8.1/lib/httpd/modules/libphp.so porque instalé la versión 8.1.
Procedemos a editar el archivo httpd.conf:
sudo nano /usr/local/etc/httpd/httpd.conf
// Para editarlo con VSCode
sudo code /usr/local/etc/httpd/httpd.conf
La terminal nos pedirá la contraseña, la ingresamos para poder continuar.
Una vez abierto el archivo presionamos command + f y en el buscador que se abre escribimos listen, y buscamos estas líneas:
#Listen 12.34.56.78:80
Listen 8080
Y modificamos el 8080 por un 80, nos queda así:
#Listen 12.34.56.78:80
Listen 80
Luego en el buscador escribimos DocumentRoot y buscamos estas líneas:
# DocumentRoot "/usr/local/var/www"
# <Directory "/usr/local/var/www">
Y modificamos las direcciones por las carpetas donde tenemos nuestros proyectos (debemos borrar las almohadillas que están al principio de cada línea):
DocumentRoot "/Users/miusuario/Documents/proyectos/miproyecto"
<Directory "/Users/miusuario/Documents/proyectos/miproyecto">
Procedemos a escribir AllowOverride y buscamos estas línea:
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride None
Y cambiamos la palabra None por All:
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All
Luego buscamos las líneas que digan LoadModule, vamos a encontrar muchas de estas así que nos ubicamos al principio de ellas, donde tenemos que ver algo como esto:
# Example:
# LoadModule foo_module modules/mod_foo.so
#
#LoadModule mpm_event_module lib/httpd/modules/mod_mpm_event.so
LoadModule mpm_prefork_module lib/httpd/modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module lib/httpd/modules/mod_mpm_worker.so
LoadModule authn_file_module lib/httpd/modules/mod_authn_file.so
Como referencia: estas líneas están por debajo de donde modificamos el puerto de 8080 a 80.
Agregamos LoadModule php_module /usr/local/opt/php@8.1/lib/httpd/modules/libphp.so y nos queda así:
# Example:
# LoadModule foo_module modules/mod_foo.so
#
#LoadModule mpm_event_module lib/httpd/modules/mod_mpm_event.so
LoadModule php_module /usr/local/opt/php@8.1/lib/httpd/modules/libphp.so
LoadModule mpm_prefork_module lib/httpd/modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module lib/httpd/modules/mod_mpm_worker.so
LoadModule authn_file_module lib/httpd/modules/mod_authn_file.so
En el buscador escribimos rewrite_module y buscamos esta línea:
#LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
Y simplemente quitamos la almohadilla que está al principio:
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
Continuamos con la búsqueda y ahora escribimos DirectoryIndex, debemos encontrar esto:
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
Y agregamos index.php antes de index.html, nos queda así:
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
Ahora ya podríamos ejecutarlo, pero antes vamos a modificar otra cosa en este mismo archivo (porque a mi me dio el aviso “AH00558: httpd: Could not reliably determine the server's fully qualified domain name” cuando lo ejecuté), para ello escribimos ServerName y buscamos esta línea:
#ServerName www.example.com:8080
Y la modificamos para que quede así:
ServerName localhost
Bien, ahora vamos a la terminal para reiniciar PHP ejecutando:
brew services restart php
// O bien
brew services restart php@8.1
Continuamos iniciado el servidor Apache:
sudo apachectl -k start
Nos pedirá la contraseña así que la ingresamos. Si se inició correctamente no debería mostrar ningún mensaje y si ya estaba corriendo entonces mostrará un mensaje como esté: “httpd (pid 7743) already running”, pero no debemos preocuparnos. En todo caso podemos reiniciar el servidor con el siguiente comando:
sudo apachectl restart
Ahora vamos al navegador y en la barra de direcciones escribimos “localhost”. Si todo está bien deberíamos ver un mensaje en la pantalla que dice “It Works!”.