En esta ocasión explicamos cómo instalar PHP en openSUSE Leap 15 paso a paso, un lenguaje de programación fundamental en el desarrollo o instalación de aplicaciones sobre tu servidor o VPS openSUSE.
Contenido
Antes de instalar PHP en openSUSE Leap 15
Para completar esta guía de instalación y configuración de PHP en openSUSE Leap 15 debes cumplir estos requisitos mínimos:
- Una instalación actualizada de openSUSE Leap 15.1, 15.2 ó 15.3.
- Opcionalmente, un servicio web como Apache o Nginx.
- Acceso a consola con un usuario con permisos de sudo o el mismo root.
- Conexión a Internet.
Si necesitas instalar también el servicio web, puedes consultar nuestra guía de instalación de Apache en openSUSE Leap 15 o la guía de instalación de Nginx en openSUSE Leap 15.
Cómo instalar PHP en openSUSE Leap 15
Vamos a instalar PHP en openSUSE Leap 15 desde los repositorios de la distribución, por lo que es interesante actualizar la información de las listas de paquetes como paso previo:
~> sudo zypper refresh
La versión de PHP incluida en la distribución es la 7.2.5 para openSUSE Leap 15.1 y la 7.4.6 para openSUSE Leap 15.2 y 15.3.
Afortunadamente podemos añadir un repositorio para disponer de las últimas revisiones de PHP 7.4 y PHP 8.0 en openSUSE Leap 15.
Repositorio de PHP 7.4 y PHP 8.0
Instalamos el repositorio, en el caso de openSUSE Leap 15.1:
~> sudo zypper addrepo https://download.opensuse.org/repositories/devel:languages:php/openSUSE_Leap_15.1/ php
Para openSUSE Leap 15.2:
~> sudo zypper addrepo https://download.opensuse.org/repositories/devel:languages:php/openSUSE_Leap_15.2/ php
Y para openSUSE Leap 15.3:
~> sudo zypper addrepo https://download.opensuse.org/repositories/devel:languages:php/openSUSE_Leap_15.3/ php
Actualizamos la información de los paquetes disponibles.
~> sudo zypper refresh
Se nos pregunta si hay que confiar en la clave pública del nuevo repositorio:
... ¿Desea rechazar la clave, confiar en ella temporalmente o confiar en ella siempre? [r/t/a/?] (r): a
Lo habitual es contestar que se confíe siempre (opción a).
Dependiendo del servidor web que tengamos instalado en nuestra máquina openSUSE Leap 15, instalaremos PHP de una forma u otra.
PHP para Apache
Si el servicio web que usas en openSUSE Leap 15 es Apache, para PHP 7.4 es posible instalar el paquete apache2-mod_php7 con zypper:
~> sudo zypper install -y apache2-mod_php7
Puede que sea necesario activar el módulo que se acaba de instalar:
~> sudo a2enmod php7
Para que los cambios tengan efecto, reiniciamos Apache:
~> sudo systemctl restart apache2
Pero si estás interesado en PHP 8.0, entonces tendrás que instalar PHP como servicio independiente:
~> sudo zypper install -y php8-fpm php8-cli
PHP para Nginx
Si este es el servicio web que usamos en openSUSE Leap 15, entonces PHP se ejecuta como un servicio autónomo, por lo que los paquetes que necesitamos instalar son para PHP 7.4:
~> sudo zypper install -y php7-fpm php7-cli
Y para PHP 8.0:
~> sudo zypper install -y php8-fpm php8-cli
Tras la instalación se crea el servicio php-fpm-service o php-fpm, que no está en ejecución ni habilitado para el inicio automático con openSUSE Leap 15, debido a que hay que preparar sus archivos de configuración.
Los archivos que necesita el servicio son /etc/phpX/fpm/php-fpm.conf y /etc/phpX/fpm/php-fpm.d/www.conf, que es requerido por el anterior. Obtenemos estos archivos desde unas versiones de muestra preparadas por el paquete de instalación, por ejemplo para PHP 7 (para PHP 8 modifica las rutas de la forma que corresponda):
~> sudo cp /etc/php7/fpm/php-fpm.conf.default /etc/php7/fpm/php-fpm.conf
Y:
~> sudo cp /etc/php7/fpm/php-fpm.d/www.conf.default /etc/php7/fpm/php-fpm.d/www.conf
Editamos el archivo de configuración principal de Nginx, nginx.conf:
~> sudo nano /etc/nginx/nginx.conf
Dentro del bloque server buscamos el siguiente bloque de configuración:
... # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root /srv/www/htdocs/; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} ...
Tenemos que eliminar los caracteres # al inicio de cada directiva (no de los comentarios), y hacer un cambio en la directiva fastcgi_param, quedando así:
... # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root /srv/www/htdocs/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } ...
Terminados los cambios, guardamos el archivo.
En el caso de tener configurados servidores virtuales, en cada servidor virtual habrá que añadir un bloque similar al anterior dentro de su bloque server, actualizando el valor de la directiva root.
Finalmente arrancamos y habilitamos el servicio con el comando systemctl:
~> sudo systemctl enable --now php-fpm
Es posible comprobar el estado del servicio PHP en cualquier momento con el comando systemctl status php-fpm
:
Y recargamos la configuración de Nginx:
~> sudo systemctl reload nginx
Versión de PHP instalada
Si necesitas saber qué versión exacta de PHP está instalada en openSUSE Leap 15 es tan sencillo como usar el comando de consola php con el parámetro -v:
~> php -v PHP 7.4.21 (cli) (built: Jul 1 2021 12:00:00) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies
Cómo probar PHP en openSUSE Leap 15
Seguramente querrás comprobar PHP en openSUSE Leap 15 a través del navegador. Podemos crear un pequeño script en PHP fácilmente accesible desde el navegador:
~> sudo nano /srv/www/htdocs/info.php
Con el contenido:
<?php phpinfo();
Para acceder a este script basta con añadir la ruta /info.php a la dirección IP o dominio de la máquina openSUSE Leap 15.
Por ejemplo, la máquina openSUSE Leap 15.3 sobre la que hemos realizado este tutorial es accesible en el subdominio opensuse15.local.lan, así que podemos usar http://opensuse15.local.lan/info.php como URL para la comprobación:
Y si has instalado PHP 8.0:
Cómo configurar PHP en openSUSE Leap 15
En el momento de configurar PHP en openSUSE Leap 15 tendremos que editar el archivo php.ini.
Para PHP como módulo de Apache este archivo se encuentra en /etc/phpX/apache2/php.ini.
Para el resto de casos hay que crear manualmente este archivo del servicio PHP-FPM. Podemos copiarlo desde la versión que se crea para PHP de consola (CLI), por ejemplo para PHP 7:
~> sudo cp /etc/php7/cli/php.ini /etc/php7/fpm/
Se encuentre en la ubicación que se encuentre, editaremos este archivo para realizar algunos ajustes.
~> sudo nano /etc/php7/fpm/php.ini
El primer cambio que haremos será definir la zona horaria del servidor para las aplicaciones en PHP, para lo que buscaremos la directiva date.timezone:
... date.timezone = 'UTC' ...
Cambiaremos el valor por defecto al que corresponda según nuestra zona horaria:
... date.timezone = Europe/Madrid ...
Si no conoces el valor que corresponde a tu zona horaria, puedes consultarlo en la documentación online de PHP.
Si el servidor que estás configurando pertenece a un entorno de producción, de cara al público o los usuarios, no habrá que hacer nada más. Sin embargo, si se trata de un entorno de desarrollo, debes configurar los mensajes de error en el navegador, cambiando los valores de las siguientes directivas:
... error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT ... display_errors = Off ... display_startup_errors = Off ...
Los valores por defecto son para producción, mientras que los siguientes son para desarrollo:
... error_reporting = E_ALL ... display_errors = On ... display_startup_errors = On ...
Cualquier cambio en los ajustes de php.ini exigirá recargar la configuración del servicio web en el caso de Apache trabajando con el módulo de PHP:
~> sudo systemctl reload apache2
O del servicio php-fpm para el resto de casos:
~> sudo systemctl reload php-fpm
Versión de consola (CLI)
Independientemente del servicio web instalado, habría que configurar también el archivo php.ini para la versión de PHP de consola:
~> sudo nano /etc/php7/cli/php.ini
Inicialmente sería buena idea configurar la zona horaria de la misma forma que hicimos anteriormente. En cualquier otro momento podremos realizar ajustes a la versión de consola de PHP, según requieran nuestros desarrollos o aplicaciones.
Los cambios se aplican inmediatamente sin necesidad de recargar o reiniciar servicios.
Extensiones
A medida que se instalen aplicaciones web o se realicen desarrollos en PHP más complejos, será necesario el uso de ciertas extensiones de PHP no incluidas en la instalación por defecto.
Para instalar las extensiones necesarias podremos hacerlo con zypper, como cualquier otro paquete. A continuación habrá que recargar la configuración del servicio PHP-FPM.
Conclusión
Ya sabes cómo instalar PHP en openSUSE Leap 15 independientemente de qué servidor web uses, aunque alguno sea más difícil de configurar que otros.
Si tienes dudas, preguntas, sugerencias, etc. puedes dejar un comentario.
¡Apoya este sitio!
¿Ya tienes este lenguaje de programación funcionando gracias a nuestra guía de instalación y configuración de PHP en openSUSE Leap 15? Pues si te apetece agradecérnoslo, cualquier pequeña contribución ayuda al mantenimiento de este sitio y creación de más tutoriales de openSUSE Leap 15 y Nginx, y puedes hacerlo dejando 1 $ de propina desde PayPal:
O, si te sientes especialmente agradecido, invitándonos a un café:
¡Gracias!