Este error no siempre tiene que ver con el tamaño real de la imagen. Generalmente ocurre cuando WordPress falla en procesar la imagen después de subirla, especialmente al generar miniaturas.
Índice de posibles causas y soluciones:
- Bloqueo en Nginx (proxy o backend)
- Límites de PHP (
php.ini
) - Fallo en la librería de procesamiento de imágenes (GD o Imagick)
- Imagen corrupta o con datos no estándar
- Permisos de archivos/carpetas
- Filtros de WordPress (
big_image_size_threshold
) - Conflictos con plugins o temas
- Errores silenciosos (sin log)
1. Bloqueo en Nginx (proxy o backend)
Síntoma:
- Aparece error
413 Request Entity Too Large
en logs. - El archivo no llega ni siquiera a WordPress.
Verificación:
grep -Ri client_max_body_size /etc/nginx/
Y revisar logs:
tail -f /var/log/nginx/error.log
Solución:
En /etc/nginx/nginx.conf
o en el bloque server {}
:
client_max_body_size 20M;
Recargar Nginx:
sudo nginx -t && sudo systemctl reload nginx
2. Límites de PHP (php.ini
)
Síntoma:
- Imagen no se sube o se corta sin error.
- No aparece en la biblioteca de medios.
Verificación:
php -i | grep -Ei 'upload_max_filesize|post_max_size|memory_limit|max_execution_time'
Valores recomendados:
upload_max_filesize = 20M
post_max_size = 25M
memory_limit = 512M
max_execution_time = 60
Recargar PHP-FPM:
sudo systemctl restart php8.2-fpm
3. Fallo en la librería de imágenes (GD o Imagick)
Síntoma:
- Imagen se sube, pero no se generan miniaturas.
- Ocurre solo con ciertos tipos: PNG, WebP, etc.
Verificación:
php -m | grep -Ei 'gd|imagick'
También con phpinfo()
desde navegador para ver cuál usa WordPress.
Soluciones:
- Instalar
php-imagick
:sudo apt install php-imagick
sudo systemctl restart php8.2-fpm
- Forzar Imagick en WordPress (
functions.php
):add_filter('wp_image_editors', function () { return ['WP_Image_Editor_Imagick', 'WP_Image_Editor_GD']; });
4. Imagen corrupta o no estándar
Síntoma:
- Solo una imagen concreta falla.
imagecreatefrompng()
oImagick
fallan sin error visible.
Verificación:
- Usar script PHP de prueba para cargar imagen manualmente.
- Verificar que
getimagesize()
yimagecreatefrom*()
no devuelvenfalse
.
Solución:
- Reconvertir la imagen con una herramienta como GIMP, Photoshop o
convert
(ImageMagick CLI). - O subirla como JPEG para evitar problemas con transparencias y metadatos raros.
5. Permisos de archivos y carpetas
Síntoma:
- Imagen se sube pero no se genera nada.
- WordPress no puede escribir miniaturas.
Verificación:
ls -ld wp-content/uploads
Solución:
sudo chown -R www-data:www-data wp-content/uploads
sudo chmod -R 755 wp-content/uploads
6. Filtros de WordPress (big_image_size_threshold
)
Síntoma:
- WordPress intenta escalar automáticamente imágenes grandes (>2560px).
Verificación:
- Error aparece solo con imágenes anchas o altas, incluso si pesan poco.
Solución:
Desactivar reescalado automático:
add_filter('big_image_size_threshold', '__return_false');
7. Conflictos con plugins o temas
Síntoma:
- El error ocurre solo con ciertos temas o con plugins activos.
Verificación:
- Cambiar al tema
Twenty Twenty-Four
. - Desactivar temporalmente todos los plugins.
- Probar la subida de nuevo.
Solución:
- Activar plugins uno por uno hasta identificar el conflictivo.
8. Errores silenciosos (sin log)
Síntoma:
- No se registra nada en
debug.log
ni en logs de PHP/Nginx.
Verificación:
En wp-config.php
, habilita:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Luego fuerza un error_log('Probando subida');
en functions.php
para comprobar que el log se escribe.
Solución:
- Usar un plugin o snippet que registre manualmente errores en procesos críticos (como en
wp_handle_upload
owp_generate_attachment_metadata
).
BONUS: ¿Cómo probar todo de forma aislada?
Crear un archivo test-imagen.php
en la raíz para hacer pruebas con GD:
<?php
$path = __DIR__ . '/wp-content/uploads/2025/08/test.png';
$img = @imagecreatefrompng($path);
if ($img) {
echo 'GD cargó la imagen';
imagedestroy($img);
} else {
echo 'GD no pudo cargar la imagen';
}
Compartir: