No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

19 Días
7 Hrs
1 Min
48 Seg

Instalación de PHP en macOS

6/24
Recursos

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:
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

Aportes 42

Preguntas 36

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Solo dos pequeños errores que encontré al seguir la guía en mi computadora que se corrigieron de la siguiente manera:

LoadModule php_module /usr/local/opt/php/lib/httpd/modules/libphp.so

Esta línea se cambia por lo siguiente, necesitan verificar en la estructura de sus carpetas de acuerdo a la instalación que hayan realizado.

LoadModule php_module /usr/local/opt/php@8.0/lib/httpd/modules/libphp.so

Y por último al reiniciar el servicio php en brew con el siguiente comando:

brew services restart php@8.0

Como pueden notar en realidad es agregar la versión de php que se instala en su sistema.

PD: Me agrada la forma de explicar del profe!!! Por cierto felicidades amigo, tus aportes son de lo mejor y ahora tu curso es una maravilla, gracias por tu esfuerzo y tu tiempo.

Saludos

Problema: 403 Forbidden

Tuve este problema al intentar acceder a localhost:

Para solucionarlo vamos a la terminal y ejecutamos:

whoami 

Y nos quedamos con el nombre que nos devuelve.
Luego vamos a esta ubicación /etc/apache2/users y ejecutamos ls para ver todos los archivos de la carpeta:

cd /etc/apache2/users
ls

En mi caso solo aparece el archivo Guest.conf. Entonces necesitamos crear un archivo como este: usuario.conf, donde usuario es el nombre que nos devolvió el comando whoami.

touch usuario.conf

Ahora verificamos la versión de Apache que tenemos instalada:

httpd -v

Y nos devolverá algo como esto: Server version: Apache/2.4.54 (Unix), aquí vemos si tenemos Apache 2.2 o Apache 2.4.

Ahora debemos modificar el archivo que creamos hace un momento y para ello ejecutamos sudo nano usuario.conf y agregamos:

// Para Apache 2.2

<Directory "/Users/username/Sites/">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

// Para Apache 2.4

<Directory "/Users/username/Sites/">
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>

// Donde username es el nombre que nos devolvio el comando whoami.

Guardamos y salimos del editor.

Ahora vamos a verificar los permisos del archivo que acabamos de modificar con ls -lah usuario.conf y nos debe devolver:

-rw-r--r--  1 root  wheel   126B Aug  2 10:48 usuario.conf

Procedemos a reiniciar Apache:

sudo apachectl restart

Ahora vamos a modificar el archivo httpd.conf (es el mismo archivo que estuvo modificando el profe Slash):

sudo nano /usr/local/etc/httpd/httpd.conf

// O bien como lo hizo el profe

sudo code /usr/local/etc/httpd/httpd.conf

Si abrimos el archivo con VSCode entonces presionamos commad + f y en la ventana escribimos _www y buscamos estas líneas:

User _www
Group _www

Y las modificamos para que nos quede así:

User usuario // recuerda que usuario es el nombre que nos devolvió whoami
Group staff

Guardamos y salimos. Ahora debemos reiniciar Apache una vez más:

sudo apachectl restart

Vamos a nuestro navegador, escribimos “localhost” en la barra de direcciones y debería funcionar.

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/[email protected]/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/[email protected]/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!”.

Para revisar qué versiones ya tienes instaladas puedes usar:

brew list | grep php

Para los que presenten el problema de que en Mac M1 el archivo en
sudo nano /usr/local/etc/httpd/httpd.conf esta vacio.

Utilzar la siguiente dirección

sudo nano /etc/apache2/httpd.conf

y si quieren editar en vs-code reemplzar nano por code

sudo code /etc/apache2/httpd.conf

Compañeros os comparto otra forma de tener un servidor php.

Navega por la terminal hasta donde tenga la carpeta de trabajo cd/aw/miTrabrajo/
dentro ejecutais php -S 127.0.0.1:8000 // listo

Da tu like si te ha servido

Al momento de iniciar el servicio de Apache me salió el siguiente error:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using ... . Set the 'ServerName' directive globally to suppress this message
httpd (no pid file) not running

Para solucionarlo, hay que editar el archivo httpd.conf en dos ubicaciones:

sudo nano /etc/apache2/httpd.conf

Y en:

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

Buscamos con control + W ServerName y cambiamos

#ServerName www.example.com:8080 

Por

ServerName 127.0.0.1

Guia 100% fiable para 2022 con M1 https://getgrav.org/blog/macos-monterey-apache-multiple-php-versions (no acentos)

Hola
Me gustaria compartirles una extención que les servira para montar su servidor con un solo click

La instalan, crean su proyecto, abren el archivo index.php le dan click derecho en cualquier parte del codigo y le dan la opción de ServeProject, hasta la fecha solo lo he probado en M1 MAC

quien mas lo leyó con el carisma de RetaxMaste ???

Siendo sincero, yo no me complique tanto y termine instalando MAMP, ¿esta mal? pero debo aceptar que este método es un poco mas engorroso.

Después de la instalación con Macbook M2, me salia el error:

_zsh: command not found: php_

Aquí la solución: https://www.youtube.com/watch?v=nDhboqE7-gU

y no es mas fácil solo install brew install php la ultima versión actual

La ruta que muestra el tutorial para levantar el servidor Apache no me funcionó, así que utilicé esta:

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

En mi caso me sucedio que el Mac Intel, no interpretaba el php y al agregar unas lineas al final se solvento

<FilesMatch .php$>
SetHandler application/x-httpd-php
</FilesMatch>

Saludos a todos y por cierto Carlos es un Crack

Creo que me hubiera ahorrado tiempo si solo hubiera descargado xampp pero una vez empece e proceso lo termine…
Muy buenos aportes de los compañeros para prevenir ciertos errores.
Ya esta funcionando de maravilla!
Buen articulo también 😃

Mientras se instalaba todo me prepare unos mates

Ver este video y luego el siguiente me dio un choque, ver las 2 presentaciones tan diferentes de platzi y la calidad de audio, me hizo mucho ruido, tipo actualizaron unas cuantas cosas
usen mamp y ya, se ahorran todos los pasos
EN resumen instalen MAMP y ya xD
Si ya tengo instalado Xampp aun así tengo que instalar httpd php?
![](<Screenshot 2024-04-18 at 9.31.37 PM>)En el navegador me aparece index of, uso una mac pro intel
Hola! me aparece este error ![](https://static.platzi.com/media/user_upload/image-ec629b20-92e9-4a9d-bb42-8140de4a7f7b.jpg)luego de correr "bre![](https://static.platzi.com/media/user_upload/image-00ccf1a1-ca91-4927-860d-29352fa6323c.jpg)w install php"
MacOS 1\. Instalar curl \- brew install curl 2\. Instalar httpd \- brew install httpd 3\. Ver la versión más reciente de PHP \- php --version 4\. Quitar la versión actual de PHP \- brew unlink php 5\. Añadir la versión que queramos de PHP \- brew link --force php@\[x.x] 6\. Instalar PHP \- brew install php@\[x.x] 7\. Configurar httpd \- sudo code /opt/homebrew/etc/httpd/httpd.conf \- Descomentar 'Listen \[puerto]' \- Cambiar el valor de 'AllowOverride' a 'All' \- Añadir línea con 'LoadModule php\_module /opt/homebrew/opt/php@\[x.x]/lib/httpd/modules/libphp.so' \- Descomentar 'LoadModule rewrite\_module lib/httpd/modules/mod\_rewrite.so' \- Añadir 'index.php' como valor del 'DirectoryIndex' \- Descomentar 'ServerName \[localhost]' o cambiar el valor a 'localhost' 8\. Reiniciar PHP \- brew services restart php 9\. Iniciar Apache \- sudo apachectl -k start
La verdad el sistema MACOS es bueno, pero en lo personal si quieres poder romper y armar, y mejorar como programador, te recomiendo windows o linux, ya que estuve mucho tiempo en Mac Os y me sentia muy limitado en muchos aspectos.
![](https://static.platzi.com/media/user_upload/Captura%20de%20Pantalla%202023-10-31%20a%20la%28s%29%208.53.19-a97c0a22-842a-437b-b66c-7ad0a4690bf7.jpg) Alguien sabe por que me dice error? gracias.
Hola a todos, yo no pude servir el fichero en mi server hasta que dí algunos permisos, lo hice así : `chmod +x /Users/[usuario]` `chmod +x /Users/[usuario]/Documents` `chmod -R +rx /Users/[usuario]/Documents/[folder]` `sudo /opt/homebrew/bin/apachectl restart`

Deberían solucionar el problema de edición que hay en el minuto 10:10 y 17:12 ya que este último es el correcto y el primero hace que te marque un error 403 de permisos.

Hola buenas, en el mime faltaria añadir esto en mac, si no no tira correctamente “AddType application/x-httpd-php .php”

te acabas de ganar el cielo por esta clase!..

AH00534: httpd: Configuration error: No MPM loaded.

😦

puro linux

Que tal detalle de configuración, se nota su expertis

Para los usuarios de macOS 💻 les recomiendo Laravel Valet (https://laravel.com/docs/9.x/valet) es fácil de instalar y usar. También está disponible para linux (https://cpriego.github.io/valet-linux/) 💪🏽.

Tuve ciertos errores con las rutas de los archivos utilizados. Lo solucioné utilizando los siguientes comandos:

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

LoadModule php_module /opt/homebrew/opt/php@8.0/lib/httpd/modules/libphp.so

Parece que las rutas de instalación que utiliza el tutorial son las rutas por defecto de Mac, pero Homebrew utiliza rutas distintas.

It works!

No me permite hacer el cambio de versión de PHP

Holaa vengo de Windows… aprendiendo de Linux 😃

**2022 **
El archivo de configuración del servidor apache :
/opt/homebrew/etc/httpd/httpd.conf

Enlazar php con apache :
LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so

A mi funciono con esta direccion

LoadModule php_module /usr/local/opt/php@8.0/lib/httpd/modules/libphp.so
![]()![]()![](<Screenshot 2024-04-18 at 9.31.37 PM>)Me aparece index of en el navegador, me pueden ayudar a solucionar, uso una mac pro intel