Una página vacía con estado 200 es PHP topándose con un error fatal mientras display_errors está apagado. El error existe; se escribió en un registro en vez de en la pantalla. Nada está roto sin remedio, y el registro nombrará el archivo y la línea.
Lea el registro, no active display_errors
Activar los errores en el navegador enseña sus rutas de archivo a cualquiera que cargue la página. El registro tiene la misma información y no se la enseña a nadie.
tail -40 /var/log/php8.3-fpm.log
# or, if the site sets its own:
tail -40 /path/to/site/error_log
Si el registro está vacío
Entonces PHP nunca llegó lo bastante lejos como para escribir uno. Dos causas, por orden de probabilidad:
- La memoria — Un script que se pasa de memory_limit se mata antes de poder registrar nada. Súbalo un momento para ver el error de verdad:
memory_limit = 512M - Un error de sintaxis en un archivo incluido — php -l lo nombra:
php -l wp-config.php
En WordPress en concreto
Nueve de cada diez veces es un plugin o un tema actualizado minutos antes. Renombre el directorio de plugins: el sitio vuelve con todos los plugins apagados, y devolverles el nombre de uno en uno encuentra al culpable.
mv wp-content/plugins wp-content/plugins.off
# site loads? rename back and re-enable one at a time
Añada
define("WP_DEBUG_LOG", true); a wp-config.php. El error se va a wp-content/debug.log y no a la pantalla.