Configurando WordPress para Imágenes Grandes


Así, para empezar, he tenido un problema de configuración en el servidor, que hacía que WordPress no aceptase la subida de fotos grandes. Tampoco voy a entrar en demasiados detalles para no dar pistas de cómo atacar mi servidor.

El problema al principio era de la configuración del tamaño máximo de los archivos en Apache, que por defecto es de 2MB. Tras arreglar eso el mensaje de error se volvía mucho más críptico:

El servidor no puede procesar la imagen. Esto puede ocurrir si el servidor está ocupado o no tiene suficientes recursos para completar la tarea. Puede ayudar el subir una imagen más pequeña. El tamaño máximo sugerido es de 2560 píxeles.

Y resulta que este es un error bastante genérico. Me he ayudado de Copilot y Gemini para trazar el error hasta su origen. Me han dado un montón de ideas centradas en los parámetros del tamaño de los archivos subidos, o de la gestión de la memoria por parte de las extensiones que manejan las imágenes en PHP. Pero nada estaba funcionando. De hecho en los logs the PHP y de Apache no aparecía nada… Lo cual debería habernos dado una pista.

Tras probar bastantes cosas, a Gemini se le ha ocurrido sugerir que mirase la consola del navegador, y efectivamente en la pestaña de red aparecía un clarísimo ERROR 413. Y leyendo un poco en el error era claro por fin lo que estaba pasando.

El nginx que tengo configurado como proxy inverso estaba rechazando las peticiones mayores de ¡1MB!.

Al final el problema estaba oculto en la línea de acontecimientos:

  • Intentamos subir una imagen de 7MB.
  • Nginx (Reverse Proxy):
    • Comprueba el tamaño de la petición: client_max_body_size (por defecto 1MB).
    • Antes de cambiar el valor devolvíael error 413 Request Entity Too Large.
    • Si no falla Nginx redirige la petición a Apache siguiendo el resto de reglas configuradas.
  • Apache
    • Comprueba de nuevo el tamaño de la petición LimitRequestBody.
    • Procesa la petición utilizando el módulo PHP.
  • PHP
    • Procesa el archivo adjunto en la petición POST aplicando los parametros configurados WP_MEMORY_LIMIT y upload_max_filesize

Ahora ya está arreglado.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *