Linux Mint 22 incluye PHP 8.3 en sus repositorios predeterminados. Eso está bien para muchísimas tareas, pero si quieres PHP 8.5, la versión estable actual con el operador pipe, un analizador URI integrado y una ejecución más rápida, solo necesitas añadir un repositorio. El único detalle específico de Linux Mint que conviene conocer es el nombre en clave de la versión, y esta guía lo cubre para que la instalación no se quede atascada a medias.
Instalar PHP 8.5 en Linux Mint consiste en usar el PPA de Ondřej Surý, el mismo repositorio en el que confían muchos administradores de Ubuntu. Mint 22 está basado en Ubuntu 24.04, así que los paquetes son idénticos. Lo importante es que el PPA publica para los nombres en clave de Ubuntu, mientras que Mint usa el suyo propio. Las herramientas modernas de Mint resuelven eso automáticamente, pero es lo primero que debes comprobar si algo falla.
Probado en una instalación limpia de Linux Mint 22.3 (Zena) en junio de 2026, con PHP 8.5 instalado desde el PPA de Ondřej Surý. Los mismos pasos sirven para Linux Mint 22, 22.1 y 22.2, y los nombres de paquetes coinciden con la instalación de PHP 8.5 en Ubuntu 24.04, ya que ambas comparten la base noble.
Lo que sigue es la configuración del PPA con la comprobación del nombre en clave, la instalación de PHP 8.5 con las extensiones que necesitan las aplicaciones reales, PHP-FPM para Nginx y mod_php para Apache, un php.ini pensado para producción y la ejecución de PHP 8.5 junto con una versión anterior en la misma máquina.
¿Qué versión de PHP trae Linux Mint?
Antes de añadir nada, conviene comprobar qué ofrece el sistema base. Los repositorios de Mint heredan el conjunto de paquetes de Ubuntu 24.04, que llegan hasta PHP 8.3:
apt-cache policy php
La versión candidata sale directamente del archivo de Ubuntu sobre el que se construye Mint:
php:
Installed: (none)
Candidate: 2:8.3+93ubuntu2
Version table:
2:8.3+93ubuntu2 500
PHP 8.3 tiene soporte de seguridad hasta finales de 2027, así que sigue siendo una opción razonable para un servidor estable. Pero 8.5 es donde está el desarrollo activo, y cada vez más frameworks nuevos lo requieren. Instalar 8.5 implica salir de los repositorios de Mint, y la forma más limpia de hacerlo es usando el PPA de Ondřej Surý.
Actualizar Linux Mint
Actualiza el índice de paquetes y aplica cualquier actualización pendiente para que el nuevo repositorio se resuelva sobre un sistema actual:
sudo apt update
sudo apt full-upgrade -y
Si aquí cambian el kernel o las bibliotecas base, reinicia antes de seguir. Un sistema a medio actualizar es la causa más común de errores de dependencias más adelante durante la instalación.
Añadir el PPA de PHP de Ondřej Surý
Instala la herramienta que gestiona PPAs y luego añade el repositorio:
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:ondrej/php
Aquí está el detalle importante de Mint. El PPA solo publica para los nombres en clave de Ubuntu, y Mint 22.3 se identifica como zena, mientras que su base de Ubuntu es noble. Las versiones modernas de add-apt-repository leen la base Ubuntu desde /etc/os-release y escriben la entrada correcta automáticamente. Comprueba que lo hizo:
cat /etc/apt/sources.list.d/ondrej-php-noble.list
La línea debe hacer referencia a noble, no al nombre en clave de Mint:
deb [signed-by=/etc/apt/keyrings/ondrej-php-noble.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu noble main
Si en lugar de eso ves el nombre en clave de Mint en ese archivo, o si añadiste el repositorio manualmente en una versión antigua, el “suite” será incorrecto y el siguiente paso fallará con un error 404. La corrección es un solo sed; la sección de solución de problemas al final lo cubre. Con el suite correcto, actualiza el índice:
sudo apt update
El PPA queda registrado correctamente contra el pocket noble:
Hit:8 https://ppa.launchpadcontent.net/ondrej/php/ubuntu noble InRelease
Ahora PHP 8.5 ya aparece como candidato junto a los paquetes de Mint. El mismo repositorio también ofrece paquetes para Debian, así que el enfoque es parecido al de la instalación de PHP 8.5 en Debian; solo difiere el caso de RHEL, donde habría que seguir la ruta de Rocky y AlmaLinux a través de Remi.
Instalar PHP 8.5 en Linux Mint
Instala el intérprete principal y el binario de línea de comandos:
sudo apt install -y php8.5 php8.5-cli php8.5-common
El metapaquete php8.5 también arrastra el módulo de Apache y, en un sistema que ya tenga Apache, lo deja preparado. Si solo necesitas la CLI o piensas usar PHP-FPM, php8.5-cli y php8.5-common son suficientes por sí solos. Confirma el binario:
php -v
Ten en cuenta que OPcache viene compilado y ya cargado, así que no hace falta ningún paquete aparte:
PHP 8.5.6 (cli) (built: May 14 2026 16:01:51) (NTS)
Copyright (c) The PHP Group
Built by Ubuntu
Zend Engine v4.5.6, Copyright (c) Zend Technologies
with Zend OPcache v8.5.6, Copyright (c), by Zend Technologies
Eso confirma que el intérprete y la CLI funcionan. Las aplicaciones también necesitan controladores de base de datos y manejo de cadenas, y eso se instala como paquetes separados.
Instalar las extensiones de PHP 8.5 necesarias
Un intérprete básico ejecuta código, pero poco más. Los controladores de base de datos, el manejo de cadenas y el soporte de imágenes viven en paquetes separados. Este conjunto cubre lo que realmente necesitan la mayoría de aplicaciones web, WordPress, Laravel, Symfony y similares:
sudo apt install -y \
php8.5-mysql php8.5-pgsql php8.5-curl php8.5-gd \
php8.5-mbstring php8.5-xml php8.5-zip php8.5-intl \
php8.5-bcmath php8.5-soap php8.5-readline
Hay una trampa aquí. No existe el paquete php8.5-opcache; OPcache viene dentro de php8.5-common. Pedírselo a apt aborta toda la transacción con “Unable to locate package”, lo que hace parecer que ninguna extensión se instaló. No lo incluyas.
Algunas extensiones extra sí merecen la pena según el tipo de proyecto:
sudo apt install -y php8.5-apcu php8.5-redis php8.5-imagick
php8.5-apcu aporta una caché rápida en memoria, php8.5-redis cubre sesiones y colas, y php8.5-imagick maneja procesamiento de imágenes más allá de lo que ofrece GD. Todos los paquetes del PPA siguen el patrón php8.5-*, así que cuando la documentación de una aplicación pida una extensión que no tienes, el nombre del paquete es bastante predecible. Puedes listar todo con:
apt-cache search php8.5- | sort
Verificar PHP 8.5 en Linux Mint
Dos comandos confirman la instalación. La cadena de versión demuestra qué intérprete resuelve la CLI, y php -m lista todos los módulos cargados y compilados:
php -v
php -m
La lista de módulos debería incluir curl, gd, intl, mbstring, mysqli, redis y Zend OPcache. Esa es la verificación básica de que PHP 8.5 está funcionando correctamente en la línea de comandos. Para servir páginas, un servidor web debe pasar las peticiones al intérprete, y Apache es la forma más rápida de demostrar que todo funciona.
Ejecutar PHP 8.5 con Apache
Linux Mint no instala un servidor web por defecto. Para una configuración local rápida, Apache con el módulo de PHP es la opción más simple, ya que el metapaquete php8.5 ya habrá instalado libapache2-mod-php8.5. Instala Apache y asegúrate de que el módulo sea el manejador activo:
sudo apt install -y apache2 libapache2-mod-php8.5
sudo a2enmod php8.5
sudo systemctl restart apache2
Coloca un archivo de prueba pequeño en la raíz web para comprobar que Apache entrega las peticiones .php al intérprete en lugar de servirlas como texto plano:
echo "<?php phpinfo();" | sudo tee /var/www/html/info.php
Abre http://localhost/info.php en el navegador de Mint. Se mostrará la página de información de PHP 8.5, con la línea “Server API” indicando Apache 2.0 Handler y la línea “System” mostrando el kernel de tu Mint.
Elimina el archivo de prueba una vez que funcione. Una página pública con phpinfo() expone tu configuración exacta a cualquiera que la encuentre:
sudo rm /var/www/html/info.php
El módulo de Apache es cómodo, pero ata PHP al proceso del servidor web y no escala tan bien como un pool separado. Para cualquier cosa más allá de una máquina local de desarrollo, lo mejor es usar PHP-FPM.
Configurar PHP-FPM
PHP-FPM ejecuta el intérprete como su propio servicio y se comunica con el servidor web mediante un socket. Es el estándar para producción y la única opción sensata con Nginx. Instálalo e inicia el servicio:
sudo apt install -y php8.5-fpm
sudo systemctl enable --now php8.5-fpm
systemctl status php8.5-fpm --no-pager
El servicio debería aparecer activo y listo para aceptar conexiones:
● php8.5-fpm.service - The PHP 8.5 FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php8.5-fpm.service; enabled; preset: enabled)
Active: active (running) since Tue 2026-06-02 17:24:11 EDT; 1s ago
Main PID: 18777 (php-fpm8.5)
Status: "Ready to handle connections"
La ruta del socket es el valor que vas a usar en el resto de la configuración. Comprueba que existe antes de enlazarlo a un servidor web:
ls -l /run/php/php8.5-fpm.sock
Debe pertenecer a www-data y vivir en /run/php/php8.5-fpm.sock. Si instalaste tanto el módulo de Apache como PHP-FPM, desactiva el módulo en proceso para que no intenten servir PHP a la vez, usando sudo a2dismod php8.5, y luego habilita proxy_fcgi.
Conectar PHP-FPM con Nginx
Si prefieres Nginx, apunta un bloque de servidor al socket de FPM. Instala Nginx y edita el sitio por defecto:
sudo apt install -y nginx
sudo nano /etc/nginx/sites-available/default
Dentro del bloque server, coloca index.php primero para que los front controllers de PHP se carguen antes que los archivos estáticos, y añade una ubicación que reenvíe PHP al socket:
index index.php index.html index.htm;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.5-fpm.sock;
}
Prueba la configuración y recarga. Un chequeo limpio de sintaxis marca la diferencia entre una recarga correcta y una caída del sitio:
sudo nginx -t
sudo systemctl reload nginx
Apache y Nginx usan el puerto 80, así que solo debe ejecutarse uno de los dos. Para una configuración completa con virtual hosts, logs, gzip y una raíz de documentos real, la guía específica de Nginx con PHP-FPM en Linux Mint continúa justo desde aquí, y es el mismo socket al que se conecta una instalación de WordPress en Mint.
Ajustar php.ini para producción
Los valores por defecto son conservadores. PHP-FPM, la CLI y Apache leen cada uno un php.ini distinto, y editar el archivo incorrecto es un clásico que hace perder tiempo. Pide a PHP qué archivo carga la CLI y mira después la estructura de directorios:
php --ini | grep "Loaded Configuration"
ls /etc/php/8.5/
La CLI carga /etc/php/8.5/cli/php.ini, y el directorio contiene árboles separados para cli, fpm y apache2:
Loaded Configuration File: /etc/php/8.5/cli/php.ini
apache2 cli fpm mods-available
Para una aplicación web, edita la copia de FPM en /etc/php/8.5/fpm/php.ini. Los valores que conviene tocar en la mayoría de servidores son:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 120
cgi.fix_pathinfo = 0
date.timezone = Africa/Nairobi
opcache.enable = 1
opcache.memory_consumption = 192
opcache.max_accelerated_files = 20000
opcache.validate_timestamps = 1
Ajusta memory_limit y los tamaños de subida según la aplicación; WordPress con mucho contenido multimedia o un worker de colas en Laravel necesita más margen que un sitio estático. Poner cgi.fix_pathinfo en 0 cierra una puerta peligrosa relacionada con path traversal. Deja opcache.validate_timestamps activado mientras desarrollas para que los cambios de código entren en vigor, y desactívalo en un servidor solo de despliegue para ganar velocidad de forma medible.
Aplica los cambios recargando FPM:
sudo systemctl reload php8.5-fpm
FPM vuelve a leer su configuración al recargar, así que los nuevos límites se aplican sin cortar conexiones activas. Cuando algo falla, los errores siguientes cubren lo que normalmente sale mal en Mint.
Solución de problemas
Error 404 en el archivo Release de zena o wilma
El PPA se añadió usando el nombre en clave de Mint en lugar de la base Ubuntu. Launchpad publica para noble, no para zena ni wilma. Reescribe la suite y actualiza de nuevo:
grep -rl ondrej /etc/apt/sources.list.d/
sudo sed -i 's/zena/noble/g' /etc/apt/sources.list.d/ondrej-php*.list
sudo apt update
Sustituye tu propio nombre en clave si no es zena; compruébalo con lsb_release -cs y confirma la base Ubuntu con grep UBUNTU_CODENAME /etc/os-release.
E: Unable to locate package php8.5
apt no ve el PPA. O bien el repositorio no se añadió, o el apt update después de añadirlo falló. Repite la actualización y revisa el error, y luego comprueba que el paquete sea visible con:
apt-cache policy php8.5
E: Unable to locate package php8.5-opcache
No existe ese paquete. OPcache viene integrado en php8.5-common y ya está activo, como muestra la salida de php -v. Elimínalo de la línea de instalación. Como apt aborta todo el comando si falla un solo paquete, este error puede hacer parecer que todas las extensiones han fallado.
El código PHP se muestra como texto plano en el navegador
El servidor web está sirviendo archivos .php en vez de ejecutarlos. En Apache, habilita el módulo con:
sudo a2enmod php8.5
sudo systemctl restart apache2
En Nginx, falta el bloque location ~ \.php$ o la ruta fastcgi_pass al socket es incorrecta.
502 Bad Gateway en Nginx
Nginx no puede alcanzar el socket de FPM. La ruta en fastcgi_pass debe coincidir exactamente con el servicio en ejecución. Compruébalo con ls /run/php/; un pool de PHP 8.5 escucha en php8.5-fpm.sock, no en el php-fpm.sock sin versión que mencionan algunas guías antiguas.
Usar varias versiones de PHP a la vez
La gran ventaja real del PPA es poder mantener más de una versión de PHP instalada al mismo tiempo. Instala una versión anterior junto a 8.5:
sudo apt install -y php8.4 php8.4-cli php8.4-fpm
Ambos pools de FPM pueden funcionar a la vez, cada uno en su propio socket, de modo que distintos sitios en la misma máquina pueden apuntar a versiones distintas dentro de sus bloques Nginx:
ls /run/php/*.sock
La salida mostrará ambos sockets versionados:
/run/php/php8.4-fpm.sock
/run/php/php8.5-fpm.sock
Para la línea de comandos, update-alternatives decide qué binario php será el valor global por defecto:
sudo update-alternatives --config php
La versión más alta gana automáticamente, así que 8.5 ya será el valor por defecto; el menú te permite fijar una anterior si un proyecto la necesita:
There are 2 choices for the alternative php (providing /usr/bin/php).
Selection Path Priority Status
----------------------------------------------------
* 0 /usr/bin/php8.5 85 auto mode
1 /usr/bin/php8.4 84 manual mode
2 /usr/bin/php8.5 85 manual mode
Press <enter> to keep the current choice[*], or type selection number:
Para ejecutar un script puntual contra una versión específica, usa directamente el binario correspondiente con php8.4 script.php o php8.5 script.php. Empieza los proyectos nuevos en 8.5, conserva 8.4 solo para aplicaciones que aún no lo hayan certificado, y cuando todo lo que usas ya soporte 8.5, purga los paquetes antiguos con:
sudo apt purge 'php8.4*'
