Cómo solucionar el error “PHP Max Input Vars Limit” en WordPress

Popular:
¡MEJORA LA CONFIGURACIÓN DE TU SERVIDOR! APLICAR AVA Y LANZA CON UN 15% DE DESCUENTO
USA EL CÓDIGO PROMOCIONAL:

🚀 Cómo corregir el error “PHP Max Input Vars Limit” en WordPress

Si estás construyendo o gestionando un sitio WordPress y de repente encuentras el error:

“Warning: Max Input Vars limit reached”
o
“Increase max_input_vars to a higher value.”

…significa que tu servidor está bloqueando PHP para procesar demasiados campos de entrada — algo que suele verse al guardar menús grandes, page builders (como Elementor o WPBakery) o envíos de formularios.

En este artículo avanzado, cubriremos:

  • ✅ Qué es la directiva max_input_vars
  • 🧠 Cómo afecta a WordPress
  • 🔧 Cómo solucionarlo mediante varios métodos (php.ini, .htaccess, wp-config, Nginx, cPanel, etc.)
  • 🔐 Mejores prácticas y consideraciones de seguridad

🔍 ¿Qué es max_input_vars?

max_input_vars es una directiva de PHP que limita cuántas variables de entrada puede aceptar PHP (a través de POST, GET y REQUEST). Esto protege al servidor de ataques de denegación de servicio por hashing, pero también afecta a operaciones legítimas en plataformas CMS.

Valor predeterminado:

max_input_vars = 1000

Si superas este límite (por ejemplo, al guardar un menú de WordPress con más de 1000 elementos), PHP corta la entrada, y WordPress falla silenciosamente al guardar todos los cambios.

📌 Cuándo encontrarás el error

  • Guardar menús de navegación grandes
  • Guardar páginas con muchos campos de formulario
  • Usar page builders con diseños complejos
  • Plugins como WPML, Elementor, WooCommerce

🛠️ Solucionar el error: 6 métodos probados

✅ 1. Modificar php.ini (mejor método si tienes acceso root o VPS)

Esta es la forma más limpia de cambiar max_input_vars si estás ejecutando tu propio servidor:

Paso 1: Localiza o crea un archivo php.ini (depende del servidor):

sudo nano /etc/php/8.2/apache2/php.ini

Reemplaza 8.1 con tu versión de PHP.

Paso 2: Busca y edita la directiva:

max_input_vars = 3000

Paso 3: Reinicia tu servidor web:

sudo systemctl restart apache2

o

sudo systemctl restart php8.2-fpm

✅ 2. Actualizar .htaccess (para usuarios de Apache con hosting compartido)

Si no puedes acceder a php.ini, intenta editar .htaccess en la raíz de tu instalación de WordPress:

<IfModule mod_php.c>
php_value max_input_vars 3000
</IfModule>

⚠️ Esto solo funciona si mod_php está habilitado. Algunos hosts usan PHP-FPM en su lugar, donde este método no funcionará.

✅ 3. Usar wp-config.php (No siempre efectivo)

WordPress no admite de forma nativa sobrescribir max_input_vars, pero en algunas configuraciones, añadir esto podría funcionar:

@ini_set('max_input_vars', '3000');

Colócalo encima de la línea que dice:

/* That's all, stop editing! Happy publishing. */

✅ 4. Modificar User php.ini o php_value en cPanel

Si estás usando hosting compartido con cPanel:

  • Ve a cPanel > Select PHP Version > Options
  • Busca max_input_vars y aumenta a 3000 o más
  • Guarda y revisa phpinfo() para confirmar

✅ Funciona al instante — no requiere reinicio.

✅ 5. Usar .user.ini (para entornos PHP-FPM o CGI)

Crea o edita .user.ini en la carpeta raíz de tu WordPress:

max_input_vars = 3000

Luego reinicia PHP (o espera más de 5 min si el host aplica los cambios automáticamente).

✅ 6. Para servidores NGINX + PHP-FPM

NGINX no usa .htaccess, así que configura PHP mediante el pool de FPM o php.ini.

Edita /etc/php/8.1/fpm/php.ini:

max_input_vars = 3000

Luego reinicia:

sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx

🧪 Cómo confirmar que funciona

Crea un archivo phpinfo.php en la raíz de tu WordPress:

<?php phpinfo(); ?>

Accede a él en el navegador: https://yourdomain.com/phpinfo.php

Busca max_input_vars y verifica que se haya actualizado.

🧼 No olvides eliminar el archivo después — expone información sensible del servidor.

🛡️ Mejores prácticas

RecomendaciónRazón
No establezcas max_input_vars en 999999Puede provocar vulnerabilidades de DoS
Mantén 3000–5000Suficiente para menús grandes/page builders
Supervisa los límites de memoriaMás variables de entrada = más uso de memoria
Usa phpinfo() o ini_get() para depurarEvita las suposiciones

💡 Bonus: Aumentar otros límites relacionados

A veces, este problema viene acompañado de otros límites alcanzados:

max_execution_time = 300
memory_limit = 512M
post_max_size = 64M
upload_max_filesize = 64M

Estos también pueden ir en php.ini, .htaccess o .user.ini.

🧭 Reflexiones finales

Entendiendo y solucionando el error max_input_vars en WordPress.El error max_input_vars es un problema sutil pero potencialmente disruptivo en WordPress que a menudo pasa desapercibido, hasta que algo crítico falla. Esta directiva de configuración de PHP controla el número máximo de variables de entrada (como campos de formulario o elementos de menú) que tu servidor procesará en una sola solicitud. Si este límite es demasiado bajo, puede impedir silenciosamente que partes de tu sitio web guarden los cambios correctamente, especialmente en entornos complejos.

Dónde aparece el problema
Este error suele aparecer en los siguientes escenarios:

Menús de WordPress grandes o anidados: al crear estructuras de menú detalladas, solo puede guardarse una parte del menú o los cambios pueden desaparecer después de guardar.

  • Sitios web multilingües: plugins como WPML o Polylang dependen en gran medida de envíos de formularios con una gran cantidad de campos de entrada para cada idioma.
  • Page builders: herramientas de arrastrar y soltar como Elementor, WPBakery o Divi pueden tener problemas al guardar diseños con muchos elementos o filas.
  • Ajustes de temas o plugins: algunos temas y plugins con paneles de configuración avanzados pueden no guardar todos los ajustes correctamente si se supera el límite.
  • ¿La peor parte? A menudo no hay ningún mensaje de error visible: los cambios simplemente no se aplican, dejándote preguntándote qué salió mal.