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.
- Comprueba el tamaño de la petición:
- Apache
- Comprueba de nuevo el tamaño de la petición
LimitRequestBody. - Procesa la petición utilizando el módulo PHP.
- Comprueba de nuevo el tamaño de la petición
- PHP
- Procesa el archivo adjunto en la petición POST aplicando los parametros configurados
WP_MEMORY_LIMITyupload_max_filesize.
- Procesa el archivo adjunto en la petición POST aplicando los parametros configurados
Ahora ya está arreglado.