--- title: "Cómo configurar OPcache para PHP 8.3 en Ubuntu 24.04" description: "Ajusta OPcache en PHP 8.3 con PHP-FPM en Ubuntu 24.04: memoria, número de ficheros, revalidación y JIT, y comprueba la tasa de aciertos de la caché." category: "Optimización de Rendimiento" language: es source: https://cubepath.com/es/docs/optimización-de-rendimiento/configuracion-de-opcache-para-php updated: 2026-09-25 --- # Cómo configurar OPcache para PHP 8.3 en Ubuntu 24.04 Cada vez que PHP ejecuta un script tiene que leerlo, analizarlo y compilarlo a opcodes. OPcache guarda esos opcodes compilados en memoria compartida para que las siguientes peticiones se salten ese trabajo, lo que reduce el uso de CPU y el tiempo de respuesta, sobre todo en frameworks y CMS con cientos o miles de ficheros. En este tutorial ajustarás OPcache para PHP 8.3 con PHP-FPM en Ubuntu 24.04, decidirás cómo se detectan los cambios de código, activarás opcionalmente el JIT y comprobarás con un script que la caché funciona y tiene espacio suficiente. ## Requisitos previos Para seguir esta guía necesitas: - Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath. - Un usuario no root con privilegios `sudo`. - PHP 8.3 con PHP-FPM y un servidor web (Nginx o Apache) sirviendo una aplicación PHP. ## Paso 1: Comprobar que OPcache está instalado En Ubuntu 24.04 OPcache se distribuye en el paquete `php8.3-opcache`, que normalmente ya se instala junto con PHP-FPM. Asegúrate de que está presente: ```bash sudo apt install php8.3-opcache ``` El paquete activa la extensión con el fichero `/etc/php/8.3/mods-available/opcache.ini`, enlazado en el directorio de configuración de PHP-FPM: ```bash ls /etc/php/8.3/fpm/conf.d/ | grep opcache cat /etc/php/8.3/mods-available/opcache.ini ``` ```output 10-opcache.ini ; configuration for php opcache module ; priority=10 zend_extension=opcache.so opcache.jit=off ``` OPcache ya está activo para PHP-FPM con los valores por defecto de PHP, que son bastante conservadores: 128 MB de memoria y hasta 10.000 ficheros. Ubuntu además desactiva el JIT de forma explícita con `opcache.jit=off`. > Nota: `php -i` en la terminal muestra la configuración de PHP CLI, no la de PHP-FPM. Por eso en el paso 4 comprobarás OPcache directamente contra el proceso PHP-FPM. ## Paso 2: Dimensionar la caché para tu aplicación Hay dos límites que conviene ajustar a tu código: - `opcache.max_accelerated_files`: número máximo de scripts en caché. Debe ser mayor que el número de ficheros PHP de todas las aplicaciones que sirve el pool. - `opcache.memory_consumption`: memoria compartida en MB para los opcodes. Cuenta los ficheros PHP de tus aplicaciones (sustituye `/var/www` si tu código está en otra ruta): ```bash find /var/www -type f -name '*.php' | wc -l ``` ```output 14873 ``` Con unos 15.000 ficheros, un valor de `20000` deja margen. PHP redondea internamente al siguiente número primo de una tabla fija, así que el máximo real que veas después será algo mayor. Para la memoria, 128 MB suele bastar para un WordPress con pocos plugins; 256 MB es un buen punto de partida para Laravel, Symfony, Magento o varias webs en el mismo servidor. En el paso 4 verás cuánta se usa realmente. ## Paso 3: Crear un fichero de ajustes de OPcache En lugar de editar el `php.ini` principal, crea un fichero propio en `conf.d` con un prefijo alto para que se cargue después de los del paquete y sus valores tengan prioridad: ```bash sudo nano /etc/php/8.3/fpm/conf.d/99-opcache-tuning.ini ``` ```ini opcache.enable=1 opcache.memory_consumption=256 opcache.interned_strings_buffer=16 opcache.max_accelerated_files=20000 ; Revisar cambios en los ficheros como máximo cada 2 segundos opcache.validate_timestamps=1 opcache.revalidate_freq=2 ``` Qué hace cada directiva: - `opcache.interned_strings_buffer`: memoria en MB para cadenas repetidas (nombres de clases, métodos, claves de arrays) compartidas entre procesos. El valor por defecto es 8; 16 es adecuado para frameworks grandes. - `opcache.validate_timestamps=1`: OPcache comprueba si el fichero ha cambiado en disco y lo recompila si es así. - `opcache.revalidate_freq=2`: esa comprobación se hace como máximo una vez cada 2 segundos por fichero. Comprueba la sintaxis y recarga PHP-FPM. La recarga también vacía la caché de OPcache: ```bash sudo php-fpm8.3 -t sudo systemctl reload php8.3-fpm ``` ```output [25-Sep-2026 12:04:17] NOTICE: configuration file /etc/php/8.3/fpm/php-fpm.conf test is successful ``` ### Producción: desactivar la comprobación de cambios Si despliegas el código de forma controlada (git, CI, rsync) y no editas ficheros a mano en el servidor, puedes evitar que PHP consulte el disco en cada revalidación: ```ini opcache.validate_timestamps=0 ``` Con este valor OPcache nunca detecta cambios por sí solo. Debes recargar PHP-FPM al terminar cada despliegue, o seguirás sirviendo el código antiguo: ```bash sudo systemctl reload php8.3-fpm ``` Si no controlas cuándo cambia el código (por ejemplo, un WordPress que actualiza plugins desde el panel), mantén `opcache.validate_timestamps=1`. ## Paso 4: Comprobar el estado de OPcache Para ver la configuración y el uso reales de PHP-FPM, crea un pequeño script fuera del directorio público de la web: ```bash sudo mkdir -p /var/www/tools sudo nano /var/www/tools/opcache-status.php ``` ```php