
⚙️ Cómo solucionar el error "The uploaded file exceeds the upload_max_filesize directive" en php.ini
Sube un tema, un plugin o una imagen a la biblioteca multimedia de WordPress y ve una línea roja: «The uploaded file exceeds the upload_max_filesize directive in php.ini». El archivo pesa 10 megabytes y WordPress no lo acepta. Una situación familiar para cualquiera que administre un sitio web.
El problema no es WordPress ni su archivo. Los proveedores de hosting limitan el tamaño de los archivos subidos a nivel de PHP, y el límite estándar de 2 megabytes no ha cambiado en años. Puede aumentarlo en cinco minutos usando cualquiera de los cinco métodos que se describen a continuación, del más simple al más avanzado.
💡 Resumen rápido:
- Aumente el límite mediante wp-config.php con una sola llamada a
ini_set; funciona en la mayoría de los hostings - Cambie la configuración en cPanel a través del Editor MultiPHP INI si su hosting usa cPanel
- Cree o edite php.ini vía FTP, un método que funciona independientemente del panel de control
- Agregue directivas a.htaccess cuando no tenga acceso a php.ini
- Como último recurso, añada
@ini_seten el functions.php de su tema hijo
De dónde viene el límite upload_max_filesize
La directiva upload_max_filesize reside en el archivo de configuración php.ini, el archivo principal de configuración de PHP en su servidor. Determina el tamaño máximo de un solo archivo subido. El valor predeterminado es 2 megabytes, suficiente para imágenes pequeñas, pero un tema de WordPress o un video no cabrán dentro de ese límite.
Otras dos directivas funcionan junto a ella: post_max_size (tamaño total de la solicitud POST, predeterminado 8 MB) y memory_limit (memoria disponible para el script, predeterminado 128 MB). Las tres están conectadas: si aumenta upload_max_filesize, verifique que post_max_size no sea inferior al nuevo valor; de lo contrario, la restricción se mantendrá en el nivel anterior.
Puede consultar los límites actuales directamente desde el panel de administración de WordPress: vaya a Medios → Añadir nuevo y mire la línea debajo del área de carga, que muestra el tamaño máximo. Alternativamente, instale el plugin PHP Info y busque las directivas relevantes en la salida de phpinfo().
1. Aumentar el límite mediante wp-config.php
El método más rápido que funciona en la mayoría de los hostings compartidos. El archivo wp-config.php se encuentra en la carpeta raíz del sitio y se carga antes de que se ejecute cualquier código de WordPress, por lo que las directivas ini_set en él tienen prioridad.
Conéctese al servidor mediante un cliente FTP (FileZilla, una opción gratuita y fiable) o abra el Administrador de archivos en el panel de control de su hosting. Busque wp-config.php en la carpeta raíz (generalmente public_html):

Agregue las siguientes líneas al final del archivo, antes del comentario /* That's all, stop editing! */:
1 @ini_set('upload_max_filesize', '64M'); 2 @ini_set('post_max_size', '80M'); 3 @ini_set('memory_limit', '256M'); 4 @ini_set('max_execution_time', '300');
Guarde el archivo y actualice la página de la biblioteca multimedia de WordPress. El límite de carga debería cambiar a 64 megabytes. Si la cifra no ha cambiado, el proveedor de hosting ha bloqueado ini_set; pase al siguiente método.
2. Cambiar la configuración mediante el Editor MultiPHP INI en cPanel
Si su hosting usa cPanel, el Editor MultiPHP INI integrado le permite cambiar la configuración de PHP sin editar archivos manualmente. Aplica automáticamente los valores al sitio seleccionado y sobrescribe los valores predeterminados del hosting.
Inicie sesión en cPanel y busque la sección Software → Editor MultiPHP INI:

Seleccione el sitio deseado en el menú desplegable en la parte superior de la página. Desplácese hacia abajo hasta la directiva upload_max_filesize e ingrese el nuevo valor (por ejemplo, 64M). Debajo, busque post_max_size y establézcalo ligeramente más alto, 80M. Haga clic en Aplicar. Los cambios surten efecto de inmediato.
Este método es preferible al primero: cPanel maneja la sintaxis automáticamente y la configuración no se restablece después de las actualizaciones de WordPress.
3. Editar php.ini vía FTP
Si no tiene acceso a cPanel o su hosting no admite el Editor MultiPHP INI, trabaje directamente con el archivo php.ini. Este controla toda la configuración de PHP y modificarlo es la forma más fiable de aumentar los límites.
Conéctese al servidor vía FTP y navegue hasta la carpeta raíz del sitio. Busque el archivo php.ini. Si no existe (el php.ini de usuario a menudo está ausente en hostings compartidos), cree un nuevo archivo de texto con ese nombre:

Agregue las siguientes directivas al archivo:
1 upload_max_filesize = 64M 2 post_max_size = 80M 3 memory_limit = 256M 4 file_uploads = On 5 max_execution_time = 300 6 max_input_time = 300
Guarde el archivo. Para que los cambios surtan efecto, algunos proveedores de hosting requieren una directiva suPHP en el archivo .htaccess. Agregue este bloque a .htaccess:
1 <IfModule mod_suphp.c> 2 suPHP_ConfigPath /home/yourusername/public_html 3 </IfModule>
Reemplace yourusername con el nombre de usuario de su cuenta de hosting. Si el sitio falla con un error después de agregar este bloque, elimínelo: su servidor funciona con CGI y no requiere suPHP.
En servidores locales, la ruta al php.ini depende de la plataforma: XAMPP (Windows): C:\xampp\php\php.ini; MAMP (macOS): /Applications/MAMP/conf/php/php.ini; LAMP (Linux): /etc/php/version/apache2/php.ini. Después de editar, reinicie el servidor web.
4. Agregar directivas al.htaccess
Cuando el proveedor de hosting ha bloqueado el acceso al php.ini y ini_set no funciona, la última línea de defensa a nivel de servidor es el archivo .htaccess. Este le permite establecer configuraciones de PHP para una carpeta específica del sitio mediante directivas php_value.
Conéctese por FTP y localice el .htaccess en la carpeta raíz. Descargue una copia de respaldo a su computadora (¡obligatorio!). Luego agregue las siguientes líneas al final del archivo:

1 php_value upload_max_filesize 64M 2 php_value post_max_size 80M 3 php_value memory_limit 256M 4 php_value max_execution_time 300 5 php_value max_input_time 300
Guarde el .htaccess y actualice el sitio. Si en lugar del sitio aparece un error 500 Internal Server Error, su servidor funciona con CGI y la directiva php_value en .htaccess no es compatible. Elimine las líneas agregadas para restaurar el sitio y use el método 3 (crear un php.ini).
Cubrimos el error 500 y su variante 502 en detalle en nuestra guía para solucionar errores de servidor en WordPress.
5. Agregar @ini_set en el functions.php de su tema
Este método es para situaciones en las que todos los métodos anteriores no están disponibles o usted desea mantener las configuraciones en el repositorio del tema. Agregue el código al archivo functions.php de su tema hijo, el cual se ejecuta con cada solicitud y anula los límites sobre la marcha.
1 @ini_set('upload_max_filesize', '64M'); 2 @ini_set('post_max_size', '80M'); 3 @ini_set('memory_limit', '256M'); 4 @ini_set('max_execution_time', '300');
Coloque el código al final del functions.php, pero antes del ?> de cierre (si está presente). Use un tema hijo: cuando el tema padre se actualiza, las ediciones en el functions.php del tema principal se restablecen, mientras que un tema hijo sobrevive a las actualizaciones sin pérdidas.
Después de agregar el código, verifique el límite en la biblioteca de medios de WordPress. Tenga en cuenta que en algunos hosts, ini_set para upload_max_filesize está bloqueado a nivel de PHP (la directiva PHP_INI_SYSTEM no permite cambiar el valor en tiempo de ejecución). En ese caso, @ini_set será ignorado silenciosamente y necesitará el método 3 o 4.
Por qué el límite no cambió: diagnóstico
¿Siguió todas las instrucciones pero el límite permaneció igual? Repase esta lista de verificación:
post_max_sizees menor que el nuevoupload_max_filesize. Esta es la causa más común:post_max_sizedebe ser al menos igual y, preferiblemente, un 20-30% mayor queupload_max_filesize: la documentación de PHP exige explícitamente quepost_max_size≥upload_max_filesize. Las cargas por lotes de múltiples archivos y los campos de formulario cuentan parapost_max_size.- El archivo se creó en la carpeta equivocada. PHP busca
php.inien el directorio del script y luego sube por el árbol hasta la raíz del servidor. Coloquephp.inien la raíz del sitio (public_html), no en una subcarpeta. - La caché de PHP (OPcache) almacena la configuración anterior. Algunos servidores almacenan en caché el
php.ini. Reinicie PHP a través del panel de hosting o espere de 5 a 10 minutos a que la caché se invalide. - El servidor funciona con CGI/FastCGI e ignora el
.htaccess. Cambie su enfoque: usephp.ini(método 3) ouser.inipara FastCGI. - El proveedor de hosting ha bloqueado el límite. En planes ultraeconómicos, el límite de carga es fijo y no se puede cambiar por ningún método, salvo actualizando su plan.
Si ninguno de estos puntos le ayudó, contacte al soporte de hosting. Proporcione su dominio, el método que usó para cambiar el límite y solicíteles que verifiquen si se permite anular upload_max_filesize en su plan.
Videotutorial
Vea el proceso paso a paso para solucionar este error, desde el diagnóstico hasta la verificación final, en este video:
⁉️🤔 Preguntas frecuentes
¿Qué valor de upload_max_filesize debería elegir?
Para la mayoría de los sitios, 64 MB son suficientes y cubren la subida de temas, plugins e imágenes de alta resolución. Si trabaja con archivos de video o grandes archivos ZIP a través del panel de administración, configúrelo entre 128 y 256 MB. No busque gigabytes sin motivo: cuanto más alto sea el límite, más memoria reserva el servidor para cada solicitud de subida.
¿Puedo subir un archivo saltándome el límite?
Sí, mediante FTP. Un cliente FTP se conecta directamente al servidor y no pasa por el manejador de PHP, por lo que los límites de
upload_max_filesizeno se le aplican. Suba el archivo awp-content/uploadspor FTP y luego regístrelo en la biblioteca multimedia de WordPress usando el plugin Add From Server.
¿Cuál es la diferencia entre upload_max_filesize y post_max_size?
upload_max_filesizees el tamaño máximo de un solo archivo en una subida.post_max_sizees el tamaño total de toda la solicitud POST, incluyendo todos los archivos, campos del formulario y cabeceras de servicio. Si está subiendo tres archivos de 20 MB,upload_max_filesizedebe ser ≥ 20 MB, mientras quepost_max_sizedebe ser ≥ 60 MB más un margen adicional para el formulario. Por esopost_max_sizesiempre se configura más alto queupload_max_filesize.
¿Por qué se restablecen los límites después de las actualizaciones de WordPress?
WordPress no modifica la configuración del servidor PHP durante las actualizaciones, pero si editó
wp-config.phpo elfunctions.phpdel tema principal, las actualizaciones del núcleo o del tema pueden haber sobrescrito esos archivos. Mantenga siempre las configuraciones personalizadas de PHP enphp.ini, en el Editor MultiPHP INI de cPanel o en un tema hijo: esas ubicaciones no se ven afectadas por las actualizaciones.
¿Necesito reiniciar el servidor después de cambiar php.ini?
Para hosting compartido y cPanel, no: los cambios se aplican automáticamente en pocos minutos. Para VPS y servidores dedicados con PHP-FPM, reinicie el servicio:
sudo systemctl restart php-fpm(ophp8.3-fpm, según la versión). Apache con mod_php generalmente recoge los cambios sin necesidad de reinicio.
Qué hacer si el límite sigue sin aumentar
Los cinco métodos anteriores cubren prácticamente cualquier escenario de hosting. Desde el wp-config.php básico hasta el functions.php de un tema hijo, ha recorrido toda la cadena. Si después de ejecutar honestamente cada paso y realizar diagnósticos el límite permanece sin cambios, la causa es una política estricta del proveedor de hosting y no podrá solucionarlo sin cambiar de plan o de proveedor.
Contacte al soporte y pregunte directamente si se permite modificar upload_max_filesize en su plan. Una respuesta negativa es motivo para considerar migrar a un VPS o a un plan compartido más flexible donde usted controle la configuración de PHP sin depender de los vecinos del servidor. Mientras tanto, suba los archivos grandes por FTP: allí no hay restricciones de tamaño y Add From Server los integrará en la biblioteca multimedia.



