Aumentar el límite de subida en WordPress en cualquier host
Comprueba el límite de subida actual de WordPress y auméntalo en el sitio correcto según tu hosting: php.ini, .user.ini, .htaccess, cPanel, Nginx o Cloudflare.
Para aumentar el límite de subida en WordPress, sube dos ajustes de PHP, upload_max_filesize y post_max_size, en el archivo de configuración que tu hosting lee de verdad. Es php.ini en un servidor que controlas, .user.ini en la mayoría de hostings compartidos con PHP-FPM o FastCGI, .htaccess solo cuando Apache ejecuta PHP como módulo, o el MultiPHP INI Editor de cPanel. Si tu servidor usa Nginx, sube también client_max_body_size. Editar wp-config.php no cambia el límite de subida.
La herramienta de tamaño máximo de subida de WordPress convierte un tamaño objetivo en los valores correspondientes para php.ini (o .user.ini), .htaccess y wp-config.php, para que puedas pegarlos en lugar de escribirlos a mano.
Paso 1: comprueba tu límite de subida actual
Antes de cambiar nada, averigua cuál es el límite ahora y qué ajuste lo está fijando.
- Medios > Añadir nuevo. La pantalla de subida muestra el tamaño máximo de archivo. Ese es el número que quieres aumentar.
- Herramientas > Salud del sitio > Información. Despliega Gestión de medios. La documentación de Salud del sitio enumera lo que aparece ahí: el tamaño máximo permitido de los datos POST, el tamaño máximo de un archivo subido y el tamaño máximo efectivo, que es el menor de los dos. La sección Servidor muestra más valores de PHP.


WordPress calcula su límite en wp_max_upload_size(), que lee upload_max_filesize y post_max_size de PHP y usa el menor. Si uno vale 64M y el otro 8M, tu límite es 8M.
Paso 2: qué ajustes importan
| Ajuste | Qué limita | Valor por defecto de PHP | Dónde se puede cambiar |
|---|---|---|---|
upload_max_filesize | El archivo subido más grande, de uno en uno | 2M | php.ini, .user.ini, .htaccess, httpd.conf |
post_max_size | Toda la petición POST, archivo incluido | 8M | php.ini, .user.ini, .htaccess, httpd.conf |
memory_limit | La memoria que PHP puede usar mientras se ejecuta | 128M | En cualquier sitio, incluido wp-config.php |
max_execution_time | Los segundos que puede durar un script | 30 | En cualquier sitio, incluido wp-config.php |
client_max_body_size (Nginx) | El cuerpo de la petición que Nginx acepta | 1m | Solo en la configuración de Nginx |
Los valores por defecto y los modos de cambio de PHP vienen de la lista de directivas de php.ini; el valor por defecto de Nginx viene de la documentación del módulo core de Nginx. La mayoría de los hostings fijan valores más altos que los de PHP, por eso Salud del sitio es el lugar donde leer tus números reales.
upload_max_filesize y post_max_size son lo que PHP llama ajustes INI_PERDIR: “se pueden establecer en php.ini, .htaccess, httpd.conf o .user.ini” y en ningún otro sitio. memory_limit no limita el tamaño del archivo, pero WordPress necesita memoria para crear copias redimensionadas de las imágenes grandes, así que una subida grande puede fallar igualmente con un error de memoria agotada después de llegar.
Paso 3: sube el límite en el sitio correcto para tu hosting
| Tu configuración | Dónde ajustarlo | Notas |
|---|---|---|
| VPS o servidor dedicado | El php.ini que carga de verdad tu PHP | Reinicia PHP-FPM o Apache después |
| Hosting compartido con PHP-FPM o FastCGI | .user.ini en la raíz de WordPress | Puede tardar hasta 5 minutos en aplicarse |
| Apache con PHP como módulo (mod_php) | .htaccess con php_value | Provoca un error 500 con PHP-FPM o FastCGI |
| Hosting con cPanel | Software > MultiPHP INI Editor | Escribe php.ini, .user.ini o .htaccess por ti |
| Nginx delante de PHP | client_max_body_size además de los valores de PHP | Si no, Nginx devuelve 413 |
| Hosting de WordPress gestionado | El panel o el soporte del hosting | Muchos hostings limitan las subidas a nivel de plataforma |
| Sitio detrás de Cloudflare | El límite de subida propio de Cloudflare | 100 MB en los planes Free y Pro |
php.ini (servidor que controlas)
Primero localiza el archivo que se carga. Crea un archivo temporal con <?php phpinfo();, ábrelo en el navegador, lee la línea “Loaded Configuration File” y después borra el archivo. Edita ese php.ini:
upload_max_filesize = 128M
post_max_size = 130M
max_execution_time = 300
Luego reinicia PHP para que lea el cambio. Con PHP-FPM, el nombre del servicio incluye la versión, por ejemplo sudo systemctl restart php8.3-fpm en Debian o Ubuntu. Con mod_php, reinicia Apache.
.user.ini (la mayoría de hostings compartidos)
PHP solo lee los archivos .user.ini cuando se ejecuta como CGI o FastCGI, lo que incluye PHP-FPM. Crea o edita .user.ini en la carpeta que contiene wp-config.php:
upload_max_filesize = 128M
post_max_size = 130M
PHP vuelve a leer estos archivos cada user_ini.cache_ttl segundos, que por defecto son 300. Espera cinco minutos antes de dar por hecho que no ha funcionado, o reinicia PHP-FPM si puedes.
.htaccess (solo Apache con mod_php)
php_value upload_max_filesize 128M
php_value post_max_size 130M
El manual de PHP describe estas directivas para PHP ejecutado como módulo de Apache. Si tu sitio muestra un 500 Internal Server Error justo después de guardar, PHP se está ejecutando como FastCGI o PHP-FPM. Quita las líneas y usa .user.ini en su lugar.
MultiPHP INI Editor de cPanel
En cPanel, abre Software > MultiPHP INI Editor, elige tu dominio y cambia los valores en el modo Basic. Según la documentación de cPanel, el modo Basic guarda en los archivos php.ini, .user.ini y .htaccess donde cada uno admite el ajuste, así que no necesitas saber cuál usa tu servidor.
Nginx
Nginx comprueba el tamaño de la petición antes de que PHP la vea. Cuando una petición supera client_max_body_size, Nginx devuelve 413 Request Entity Too Large. El valor por defecto es 1m. Añade en tu bloque server un valor al menos igual a post_max_size:
client_max_body_size 130M;
Prueba y recarga con sudo nginx -t && sudo systemctl reload nginx. En Apache, el ajuste equivalente es LimitRequestBody, que rara vez hay que tocar en un hosting de WordPress normal.
Hostings gestionados y Cloudflare
Algunos hostings de WordPress gestionados ignoran tu php.ini o .user.ini y fijan el límite para toda la plataforma. Si Salud del sitio sigue mostrando el número antiguo después del cambio, pregunta a tu hosting cuál es el máximo y si pueden subirlo.
Si el sitio pasa por Cloudflare, Cloudflare tiene su propio límite. Su documentación de caché indica tamaños máximos de subida de 100 MB en los planes Free y Pro, 200 MB en Business y hasta 5 GB en Enterprise. Ningún ajuste de PHP puede saltarse eso.
Por qué wp-config.php no funciona
Muchos artículos recomiendan añadir esto a wp-config.php:
@ini_set( 'upload_max_filesize', '128M' );
@ini_set( 'post_max_size', '130M' );
Los dos ajustes son INI_PERDIR, y la documentación de PHP dice que los ajustes de ese modo no se pueden establecer con ini_set(). La @ oculta el fallo, así que las líneas parecen inofensivas y no cambian nada. Lo que sí puede cambiar wp-config.php es la memoria, porque memory_limit se puede fijar en cualquier sitio:
define( 'WP_MEMORY_LIMIT', '256M' );
Eso ayuda cuando las imágenes grandes fallan durante el procesamiento. No cambia el tamaño máximo de archivo que se puede subir.
Paso 4: confirma el cambio
Recarga Medios > Añadir nuevo y comprueba que el tamaño máximo de archivo muestra tu nuevo valor. Si no es así:
- Comprueba que
post_max_sizees al menos igual aupload_max_filesize. WordPress usa el menor. - Confirma que editaste el archivo que PHP carga de verdad. Un
php.inien la carpeta equivocada se ignora. - Espera cinco minutos tras cambiar
.user.ini, o reinicia PHP-FPM. - Si el número cambió en WordPress pero las subidas siguen fallando con 413, el bloqueo está en Nginx, en el proxy de tu hosting o en Cloudflare.
- Si la subida llega a WordPress y luego falla con “Error HTTP”, el tamaño ya no es el problema. Nuestra guía sobre el error HTTP de WordPress al subir imágenes repasa las causas habituales.
¿Qué valor conviene poner?
Ponlo en el archivo más grande que de verdad necesites subir, con un poco de margen, y deja post_max_size algo por encima de upload_max_filesize. Las subidas grandes también tardan más, así que sube max_execution_time si los archivos pesados se cortan con conexiones lentas. Para archivos muy grandes, como vídeos largos o copias de seguridad, subirlos por SFTP o con un plugin de subida por partes suele ser más fiable que una única subida enorme desde el navegador, y el límite de un plan de Cloudflare puede descartar el navegador de todos modos.
Cuando tengas claro tu objetivo, la herramienta de tamaño máximo de subida te escribe las líneas de PHP correspondientes. Añade tú la línea de Nginx de esta guía si tu servidor usa Nginx.
FAQ
Preguntas
¿Cómo compruebo mi límite de subida actual en WordPress?
Ve a Medios > Añadir nuevo. La pantalla de subida muestra el tamaño máximo de archivo. Para ver el detalle, abre Herramientas > Salud del sitio > Información y despliega Gestión de medios, que indica el tamaño máximo de un archivo subido, el tamaño máximo de los datos POST y el tamaño máximo efectivo, que es el menor de los dos.
¿Por qué WordPress dice que el archivo subido excede la directiva upload_max_filesize en php.ini?
El archivo es más grande que el ajuste upload_max_filesize de PHP. WordPress no fija este límite, lo lee de PHP. Aumenta upload_max_filesize y post_max_size a la vez en php.ini, .user.ini o, en Apache con mod_php, .htaccess. El valor por defecto de PHP para upload_max_filesize es solo 2M, aunque la mayoría de los hostings fijan un valor más alto.
¿Puedo aumentar el límite de subida desde wp-config.php?
No. upload_max_filesize y post_max_size son ajustes PHP_INI_PERDIR, que PHP solo acepta desde php.ini, .htaccess, httpd.conf o .user.ini. Una línea ini_set() en wp-config.php se ejecuta sin error y no cambia nada. wp-config.php puede subir el límite de memoria de WordPress, pero la memoria no es lo que limita el tamaño del archivo.
¿Por qué sigo viendo 413 Request Entity Too Large después de subir los límites de PHP?
Algo que está delante de PHP rechaza la petición. En Nginx es client_max_body_size, cuyo valor por defecto es 1m y que devuelve un error 413 cuando se supera. Auméntalo en el bloque server y recarga Nginx. Si tu sitio pasa por Cloudflare, el límite de subida de tu plan también puede frenar la petición antes de que llegue a tu servidor.
¿post_max_size tiene que ser mayor que upload_max_filesize?
Debe ser al menos igual, y algo mayor es más seguro. El archivo se envía dentro de una petición POST junto con otros datos del formulario, así que toda la petición cuenta para post_max_size. WordPress usa el menor de los dos valores como límite de subida, por lo que subir solo upload_max_filesize deja el límite donde estaba.