No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

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 29

Preguntas 36

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

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 鈥渓ocalhost鈥 en la barra de direcciones y deber铆a funcionar.

Para revisar qu茅 versiones ya tienes instaladas puedes usar:

brew list | grep php

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

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鈥檚 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 鈥渓ocalhost鈥. Si todo est谩 bien deber铆amos ver un mensaje en la pantalla que dice 鈥淚t Works!鈥.

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

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)

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

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

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

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 馃槂

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

Mientras se instalaba todo me prepare unos mates

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 鈥淎ddType 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