Cómo instalar PHP en Debian 9 Stretch

En esta entrada vamos a ver cómo instalar o actualizar PHP en Debian 9 Stretch a cualquier versión de PHP 8 y PHP 7 paso a paso, de modo que puedas seguir trabajando con aplicaciones web que requieren versiones de PHP más modernas que la que ofrece el repositorio oficial de Debian 9, para seguir sacando toda la potencia posible a tu servidor o VPS Debian.

Antes de instalar PHP en Debian 9 Strech

Para seguir esta guía de instalación o actualización de PHP en Debian 9 Stretch se asume que partimos de la siguiente base:

  • Una versión actualizada de Debian 9 Stretch.
  • Acceso al sistema con un usuario con privilegios de root o sudo.
  • Conexión a Internet.

En este tutorial se contempla la instalación desde PHP 7.0 de los repositorios de Debian y la instalación o actualización de versiones superiores (hasta PHP 8.0) utilizando un repositorio adicional.

Cómo instalar PHP en Debian 9

Vamos a ver el procedimiento para instalar PHP en Debian 9 Stretch, según los distintos casos que se pueden dar. Puedes saltarte la parte que no te interese.

Cómo instalar PHP 7.0 desde el respositorio oficial

Si por algún motivo necesitas instalar PHP 7.0 en Debian 9 Stretch desde el repositorio oficial de la distribución, actualizaremos previamente las listas de paquetes:

~$ sudo apt update

Y bastará con instalar el paquete php mediante apt:

~$ sudo apt install -y php

Pero esto nos relegará a la versión 7.0, siendo del todo improbable que futuras actualizaciones de Debian 9 incluyan alguna vez versiones superiores.

También hay que señalar que al instalar el paquete php en Debian se añadirán los paquetes del servidor web Apache si no estuviera instalado previamente.

Cómo instalar PHP 8.0, 7.4 y anteriores

Para instalar versiones más actuales de PHP en Debian 9 instalaremos el repositorio de sury.org, que actualmente ofrece hasta PHP 8.0. Se trata de un repositorio seguro y firmado, así que tendremos que hacer algunos preparativos.

Como apt necesita trabajar accediendo a repositorios mediante conexiones seguras es necesario instalar el paquete apt-transport-https:

~$ sudo apt -y install apt-transport-https

El siguiente paso será añadir la clave pública con la que se firman los paquetes del nuevo repositorio, descargándola en el directorio de firmas de apt:

~$ sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

Crearemos la configuración del nuevo repositorio en un archivo independiente de repositorio de apt:

~$ sudo nano /etc/apt/sources.list.d/php.list

Sólo será necesario añadir la siguiente línea:

deb https://packages.sury.org/php/ stretch main

Guardados los cambios, es hora de actualizar la información de los repositorios:

~$ sudo apt update

Tras la actualización conviene realizar una actualización de los paquetes instalados:

~$ sudo apt upgrade -y

Si estás instalando PHP por primera vez

Tenemos dos posibilidades a la hora de instalar PHP en Debian 9 desde el repositorio alternativo.

La primera opción es instalar la vesión por defecto con el siguiente comando:

~$ sudo apt install -y php

Que instalará la versión estable disponible más reciente de PHP (en el momento de actualizar esta guía sería PHP 8.0). Hay que tener en cuenta que conforme el mantenedor del repositorio vaya añadiendo nuevas versiones de PHP y nosotros vayamos actualizando el sistema, se actualizará automáticamente la versión de PHP instalada, lo cual puede ser beneficioso o perjudicial, según el caso.

La segunda opción es instalar una versión concreta, incluso la versión en fase de pruebas si estuviese disponible, usando el número de versión en el nombre de los paquetes:

~$ sudo apt install -y phpX.X

Cambia X.X por el valor apropiado para instalar PHP 8.0, 7,4, 7.3, 7.2, 7.1 ó 7.0.

Por ejemplo, para instalar PHP 7.4:

~$ sudo apt install -y php7.4

ATENCIÓN: Es aconsejable instalar una versión concreta, indicando el número de versión, en lugar de la versión por defecto, ya que si el mantenedor del repositorio decide avanzar la versión por defecto, podríamos cambiar de versión de PHP involuntariamente en alguna actualización de paquetes. Esto podría provocar problemas en aplicaciones ya instaladas o en nuestros desarrollos.

Si estás actualizando PHP

Después de la actualización del nuevo repositorio, si tenías PHP 7.0 de los repositorios de Debian se habrá actualizado a la última revisión de PHP 7.0 disponible en el nuevo repositorio. Pero además se habrá instalado la versión estable más reciente de PHP (o la versión especificada).

Si tu servidor web es Apache, tendrás que configurarlo para que use la nueva versión de PHP.

Desactivamos el módulo actual de PHP 7.0:

~$ sudo a2dismod php7.0

Activamos el módulo nuevo de PHP :

~$ sudo a2enmod phpX.X

Y reiniciamos Apache para que cargue la nueva configuración:

~$ sudo systemctl restart apache2

Cómo comprobar que PHP funciona

Para comprobar empíricamente que PHP ha quedado configurado y listo para su uso en Apache, una forma rápida y sencilla de hacerlo es creando un archivo con extensión .php en algún lugar accesible por el servidor web. Por ejemplo, crearemos el archivo /var/www/html/info.php con el siguiente contenido:

<?php phpinfo();

No uso la etiqueta de cierre  ?> en el script porque no sólo no es necesario, sino que es una buena práctica.

Ahora, si accedemos a la URL correspondiente (por dominio o dirección IP del servidor Debian 9) a través de un navegador, deberíamos ver algo como lo siguiente:

como instalar php en debian 9 stretch

Si decidiste instalar PHP 8.0 en tu máquina Debian 9 verás algo como esto otro:

como instalar php 8 en debian 9 stretch

A pesar de que es imposible crear un script PHP más pequeño, la información que obtenemos es enorme. Vale la pena consultarla no sólo tras instalar PHP por primera vez, sino más adelante, conforme vayamos añadiendo extensiones y modificando configuraciones.

Cómo configurar PHP en Debian 9

Si has llegado hasta aquí tendrás un servidor web Apache 2 con PHP funcional. Pero querrás configurar PHP para afinarlo a las características de tu sitio web. Especialmente, querrás que PHP funcione de una forma u otra según si se trata de un servidor de desarrollo o un servidor de producción. Para ello editaremos el famoso archivo php.ini.

¿Dónde está php.ini en Debian 9?

PHP, como casi cualquier otro elemento del sistema, instala su configuración bajo /etc/, de modo que tenemos la carpeta /etc/php/X.X/ (X.X variará según la versión de PHP instalada) en la cual encontramos los distintos archivos de configuración, tanto de la interfaz de línea de comandos (cli), los módulos disponibles y, el que más suele interesar, la configuración para Apache.

Así que podemos encontrar el archivo php.ini en Debian bajo la ruta /etc/php/X.X/apache2/php.ini, con permisos de escritura sólo para root, por lo que para realizar ajustes de configuración necesitaremos tales privilegios.

~$ sudo nano /etc/php/X.X/apache2/php.ini

Configurar php.ini

Casi lo primero que tenemos que hacer al abrir php.ini con el editor es establecer el huso horario en que queremos que trabajen nuestras aplicaciones web sobre PHP.

Editaremos la cláusula date.timezone, que por defecto viene desactivada a través de un comentario, e indicaremos el uso horario deseado. Por ejemplo, para España peninsular el valor adecuado sería Europe/Madrid:

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

Si tu zona horaria es distinta, puedes consultar todos los valores disponibles en http://php.net/manual/es/timezones.php y elegir el que te corresponde.

Lo siguiente que tenemos que configurar es el uso del servidor, como servidor de desarrollo o producción. Esto es muy importante porque un servidor en producción configurado como de desarrollo puede provocar graves problemas de seguridad al exponer cierta información en caso de errores de las aplicaciones.

Y al contrario, un servidor de desarrollo configurado como de producción nos provocará muchos dolores de cabeza al tratar de depurar errores en las aplicaciones que estemos desarrollando.

En definitiva, se trata de perfilar el manejo de errores en PHP. Existen ciertas cláusulas en php.ini que van a configurar el comportamiento de PHP ante los errores. En el propio php.ini aparecen comentarios indicando los valores óptimos para entornos de producción y desarrollo, por lo que nos limitaremos a especificar los valores concretos para cada cláusula.

Por ejemplo, si se trata de un servidor de desarrollo, querremos que PHP muestre la información de los errores que se produzcan. Editaríamos la sección de manejo de errores de php.ini asignando valores como se nos indica en el propio archivo:

...
; 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
...

Como puedes ver en el ejemplo, he asignado a cada cláusula los valores que indica la documentación para entornos de desarrollo. Para un entorno de producción (que debe ocultar toda la información posible sobre errores de la aplicación) bastaría con cambiar estos valores por los correspondientes.

PHP para consola (CLI)

Además de la versión para el servicio web, PHP en Debian 9 también incluye una vesión para consola, PHP CLI, que dispone de su propio archivo de configuración php.ini. Por tanto es importante configurarlo ya que algunas aplicaciones web usan tanto PHP para el sevicio web como PHP CLI para tareas de mantenimiento.

~$ sudo nano /etc/php/X.X/apache2/php.ini

Al menos sería interesante configurar la zona horaria para que conincida con la versión de PHP para el servicio web.

Cómo instalar extensiones de PHP en Debian 9

Al instalar PHP en Debian 9 se incorporan un puñado de extensiones por defecto, pero hay muchas más que podemos necesitar en cualquier momento, según los requerimientos de nuestras aplicaciones.

Para instalar extensiones de PHP en Debian 9 basta con usar apt indicando la extensión que necesitamos. Si no conocemos el nombre exacto de la extensión, como pista tendremos en cuenta que la nomenclatura de los paquetes empieza por php- o phpX.X seguido del nombre de la extensión. Examinando el listado de paquetes podemos encontrar lo que buscamos:

~$ sudo apt-cache search phpX.X |grep -i php
...
phpX.X-doctrine-orm - tool for object-relational mapping
phpX.X-geshi - Generic Syntax Highlighter
phpX.X-icinga - PHP library to communicate with and use Icinga
phpX.X-guestfs - guest disk image management system - PHP bindings
phpX.X-swiftmailer - Swiftmailer, free feature-rich PHP mailer
phpX.X-libvirt-php - libvirt bindings for PHP
phpX.X-amqp - AMQP extension for PHP
phpX.X-amqplib - pure PHP implementation of the AMQP protocol
phpX.X-analog - PHP micro logging package
...
phpX.X-symfony-yaml - convert YAML to PHP arrays and the other way around
phpX.X-tcpdf - PHP class for generating PDF files on-the-fly
phpX.X-tideways - Tideways PHP Profiler Extension
phpX.X-twig - Flexible, fast, and secure template engine for PHP
phpX.X-twig-doc - Twig template engine documentation
phpX.X-wikidiff2 - external diff engine for mediawiki
phpX.X-xdebug - Xdebug Module for PHP
phpX.X-zeroc-ice - PHP extension for Ice
~$

El listado es enorme, y en cada revisión de PHP se añaden más. Filtrando un poco más, si sabemos qué andamos buscando, podemos estrechar los resultados. Por ejemplo, si queremos buscar la extensión de MySQL para PHP, podemos filtrar la lista anterior:

~$ sudo apt-cache search ^phpX.X |grep -i mysql
phpX.X-mysql - MySQL module for PHP [default]
phpX.X-mdb2-driver-mysql - mysql MDB2 driver
~$

Cuando hayamos encontrado el paquete de la extensión que buscamos, o si ya sabíamos cuál era, lo instalaremos directamente con apt:

~$ sudo apt install -y phpX.X-mysql

Y con esto habremos instalado la extensión con sus correspondientes dependencias.

Normalmente es necesario recargar la configuración del servidor web para que PHP tenga en cuenta las extensiones recién instaladas:

~$ sudo systemctl reload apache2

Cómo configurar las extensiones de PHP en Debian

Como ya vimos antes, la carpeta de configuraciones de PHP 7 es /etc/php/X.X/, dentro de la cual encontraremos mods-available/ en la que residen los distintos archivos .ini que sirven para ajustar la configuración de cada extensión.

Si tienes que perfilar la configuración de alguna extensión basta editar (con permisos de root) el archivo .ini correspondiente y cambiar los valores que necesites. Si PHP se ejecuta como módulo de Apache, habrá que recargar la configuración del servidor web:

~$ sudo systemctl reload apache2

Conclusión

Ahora que ya sabes cómo instalar y actualizar PHP en Debian 9 Stretch, si has seguido los tutoriales anteriores, tu máquina ya está en condiciones de ejecutar complejas aplicaciones web tanto en entornos de desarrollo como de producción.

En siguientes entregas dotaremos a nuestra máquina Debian GNU/Linux de mayores capacidades, basadas en parte de lo que ya tenemos.

Para cualquier duda, pregunta, sugerencia o corrección, déjame un comentario.

¿Te ha servido este artículo? Si te ha resultado útil tal vez te apetezca agradecérnoslo dejando tan sólo 1 $ de propina con PayPal:

O, si te sientes especialmente agradecido, puedes invitarnos a un café:

¡Gracias!

5/5 - (1 voto)

Deja un comentario

Este sitio esta protegido por reCAPTCHA y laPolítica de privacidady losTérminos del servicio de Googlese aplican.

El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.