Cómo instalar PHP en Debian 9

Cómo instalar PHP en Debian 9

En esta entrada vamos a ver cómo instalar o actualizar PHP en Debian 9 Stretch a cualquier versión de 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 Stretch, para seguir sacando toda la potencia posible a tu servidor o VPS Debian.

Antes de instalar PHP en Debian 9

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 7.4) 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 improbable que las 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 7.0, 7.1, 7.2, 7.3 y 7.4

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

Para que apt pueda 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

Si no tenías instalado PHP anteriormente puedes instalarlo con el siguiente comando:

~$ sudo apt install -y php

Que instalará la versión estable más reciente de PHP. Si quieres alguna versión concreta, incluso la versión en fase de pruebas, usa este otro comando:

~$ sudo apt install -y php7.x

Cambia la x por el valor apropiado para instalar PHP 7.0, 7.1, 7.2, 7.3 ó incluso 7.4.

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 (PHP 7.3 en el momento de escribir este tutorial).

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

~$ sudo a2enmod php7.3

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/phpinfo.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
PHP 7.3 en Debian 9: Test de funcionamiento de PHP a través de la funcion phpinfo()

 

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

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 php7.x seguido del nombre de la extensión. Examinando el listado de paquetes podemos encontrar lo que buscamos:

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

El listado es enorme, y en cada revisión de Debian y 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 ^php |grep -i mysql
php-mysql - MySQL module for PHP [default]
php-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 php-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/7.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, quién sabe, ¡tal vez te apetece invitarme a un café!

 

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (4 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