Cómo instalar PHP en Debian 10 Buster

Cómo instalar PHP en Debian 10 Buster

En esta entrada explico cómo instalar PHP en Debian 10 Buster paso a paso. Por fin podremos disfrutar de PHP 7.3 en nuestro sistema favorito con los paquetes del repositorio oficial. Al final de esta guía dispondrás de PHP instalado y configurado para tu servidor web dentro de tu sistema Debian 10.

Antes de instalar PHP en Debian 10 Buster

Si vas a seguir esta guía de instalación de PHP en Debian 10 Buster es conveniente que cumplas al menos estos requisitos:

  • Un sistema Debian 10 actualizado.
  • Un servidor web instalado del que conozcas los fundamentos de su configuración.
  • Conexión a Internet.
  • Acceso por consola como root o usuario con permisos de sudo.

En esta guía te mostramos cómo configurar los servidores web Apache y Nginx, pero no debería haber muchas diferencias con otras alternativas.

Cómo instalar PHP en Debian 10

Para instalar PHP en Debian 10 Buster podemos optar entre que este trabaje como módulo del servidor web o como servicio independiente. Según el servidor web que usemos es más fácil una u otra configuración, teniendo en cuenta la preconfiguración que incluyen los paquetes de PHP.

Vamos a ver cómo hacerlo para los servidores web más populares: Apache y Nginx.

El primer paso, como siempre, es actualizar el sistema:

~$ sudo apt update && sudo apt -y upgrade

Cómo instalar PHP para Apache 2 en Debian 10

Con el sistema actualizado, instalamos el paquete de PHP 7.3 para Apache, que es php7.3, aunque podemos utilizar el metapaquete php:

~$ sudo apt -y install php

Tras la instalación del paquete y sus dependencias PHP queda instalado y perfectamente integrado para funcionar como módulo de Apache. No es necesario reiniciar ni recargar la configuración del servidor web, así que podemos pasar directamente a confirmar que funciona.

Cómo instalar PHP para Nginx en Debian 10

En el caso de que servidor web sea Nginx, PHP funcionará como un servicio FastCGI independiente de Nginx, en lugar de como un módulo de servidor web.

El paquete que demos instalar es php-fpm, ya que si intentamos instalar el paquete php este instalará Apache como dependencia.

~$ sudo apt -y install php-fpm

Se crea el nuevo servicio php7.3-fpm que queda activado y en ejecución, como podemos comprobar con systemctl:

~$ systemctl status php7.3-fpm
● php7.3-fpm.service - The PHP 7.3 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.3-fpm.service; enabled; vendor prese
   Active: active (running) since Sun 2019-07-14 19:34:53 CEST; 8min ago
     Docs: man:php-fpm7.3(8)
 Main PID: 6555 (php-fpm7.3)
   Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/se
    Tasks: 3 (limit: 1150)
   Memory: 13.5M
   CGroup: /system.slice/php7.3-fpm.service
           ├─6555 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf)
           ├─6556 php-fpm: pool www
           └─6557 php-fpm: pool www

En el caso de Nginx la configuración no es automática y debemos realizar unos ajustes en los archivos de configuración del servidor virtual por defecto y en el del resto de servidores virtuales para los que queramos activar PHP.

Estos archivos están en /etc/nginx/sites-available/ y el correspondiente al servidor por defecto es /etc/nginx/sites-available/default:

~$ sudo nano /etc/nginx/sites-available/default

Editamos la directiva index para que considere también como archivo por defecto los index.php:

...
        index index.php index.html index.htm index.nginx-debian.html;
...

Buscamos también un bloque location claramente relacionado con PHP que está desactivado:

...
        # pass PHP scripts to FastCGI server
        #
        #location ~ \.php$ {
        #       include snippets/fastcgi-php.conf;
        #
        #       # With php-fpm (or other unix sockets):
        #       fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        #}
...

Debemos activar el bloque y dentro de este la directiva include y la directiva fastcgi_pass_unix, que corresponde al funcionamiento del servicio FastCGI como servicio de sockets de Unix (el modo de funcionamiento del servicio php7.3-fpm). Quedaría algo así:

...
        # pass PHP scripts to FastCGI server
        #
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
        #
        #       # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        }
...

Si tienes más servidores virtuales configurados, deberás realizar ajustes similares en sus respectivos archivos de configuración.

Guardados los cambios, hay que reiniciar Nginx:

~$ sudo systemctl restart nginx

Cómo probar PHP en Debian 10

Vamos a crear un pequeño script PHP en una ruta fácilmente accesible vía web, que es común tanto en Apache como en Nginx:

~$ sudo nano /var/www/html/info.php

El contenido será mínimo, solamente una llamada a la función phpinfo():

<?php
        phpinfo();

Una vez guardados los cambios, accedemos a través de un navegador a nuestra máquina Debian 10, a través de su dirección IP, nombre de máquina o dominio, añadiendo al final /info.php, en este ejemplo accedo a través de dominio y la URL sería http://debian10.local/info.php:

como instalar php en debian 10 buster

Podemos ver que funciona y nos ofrece mucha información, desde la versión de PHP en uso hasta la localización de archivos de configuración, módulos cargados, etc.

Cómo configurar PHP en Debian 10

Para configurar PHP en Debian 10 debemos editar el archivo principal de configuración. Para Nginx y servidores web que usen FastCGI FPM lo podemos encontrar en /etc/php/7.3/fpm/php.ini, mientras que en el caso de Apache lo encontramos en /etc/php/7.3/apache2/php.ini.

Editamos el archivo correspondiente y nos disponemos a realizar modificaciones.

Zona horaria

Deberíamos configurar la zona horaria correspondiente a nuestra máquina Debian. Para ello debemos encontrar la directiva date.timezone:

...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =
...

Podemos comprobar que la directiva está desactivada y no tiene asignado ningún valor. Lo que procede es asignarle un valor (puedes consultar los valores disponibles en la URL que aparece en el comentario) y activarla. En el caso de España peninsular quedaría así:

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Madrid

Manejo de errores

PHP puede tener dos comportamientos con respecto a los errores que pueden aparecer en páginas web con scripts realizados en este lenguaje.

Una configuración de desarrollo mostrará amplia información en pantalla cada vez que se produzca un error, y así ayudar a su corrección.

Pero una configuración de producción, ocultará estos mensajes, ya que pueden mostrar información sensible que ayude a explotar vulnerabilidades.

Para configurar estos mensajes de error buscaremos las siguientes directivas:

; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; http://php.net/error-reporting
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

...
; Development Value: On
; Production Value: Off
; http://php.net/display-errors
display_errors = Off

...
; Development Value: On
; Production Value: Off
; http://php.net/display-startup-errors
display_startup_errors = Off

...

Si echamos un vistazo a las comentarios que acompañan a las directivas vemos los valores posibles que podemos asignarles. Es fácil comprobar que los valores por defecto corresponden a un entorno de producción, que oculta los errores al usuario.

Si queremos configurar estos valores para un entorno de desarrollo sólo hay que hacer los cambios sugeridos:

; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; http://php.net/error-reporting
error_reporting = E_ALL

...
; Development Value: On
; Production Value: Off
; http://php.net/display-errors
display_errors = On

...
; Development Value: On
; Production Value: Off
; http://php.net/display-startup-errors
display_startup_errors = On

...

Los comentarios nos ayudarán a restablecer una configuración u otra.

Cómo cargar la nueva configuración de PHP

Sea cual sea el modo en el que trabaja PHP con el servidor web, si hacemos cambios de configuración tendremos que recargar la configuración.

En el caso de tener PHP funcionando como módulo (Apache), recargaremos la configuración del servidor web:

~$ sudo systemctl reload apache2

Si PHP funciona como servicio FastCGI (el caso de Nginx), entonces se recargará la configuración de dicho servicio:

~$ sudo systemctl reload php7.3-fpm.service

Conclusión

Ahora que ya sabes instalar PHP en Debian 10 Buster puedes configurar tu servidor web para ofrecer potentes aplicaciones web o crear tus propios desarrollos basados en este popular lenguaje de programación.

Para dudas, preguntas, sugerencias, etc. siempre puedes dejar un comentario.

¡Apoya este sitio!

¿Qué te ha parecido esta guía de instalación de instalación y configuración de PHP en Debian 10 Buster? ¿Te ha sacado de algún atolladero? Pues si te sientes en deuda conmigo no lo pases mal, ¡siempre me puedes invitar a un café!

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (2 votos, promedio: 5,00 de 5)
Cargando…

Deja un comentario

Cerrar menú

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información

ACEPTAR
Aviso de cookies