Cómo incrementar max_input_vars de PHP
Nos puede haber pasado que, cuando estamos trabajando con un gran volumen de subidas a una base de datos, sin que medie ningún error evidente, se ha cortado la subida dejando parte de los campos impecablemente subidos, y el resto han sido ignorados.
Si revisando el log de errores de servidor vemos algo como: «unknown: input variables exceeded 1000. To increase the limit change max_input_vars in php.ini«, no debemos preocuparnos, pues la solución es relativamente sencilla.
Valor actual de max_input_vars en el php.ini
Aunque el error nos indica ya el límite de la variable, («input variables exceeded 1000»), podemos consultar su valor actual a través del php.ini
Esto nos puede servir para que cuando realicemos el cambio nos cercioremos de que se ha aplicado correctamente, además de aportarnos otra gran cantidad de información muy útil.
¿Cómo lo hacemos?
- Creamos un archivo llamado info.php
- Escribimos, únicamente, el siguiente código:
<?php phpinfo(); ?>
- Lo subimos a nuestro ftp y lo ejecutamos. Si lo hemos a la raíz, la ruta sería http://dominio.com/info.php
Eso nos mostrará algo como lo siguiente:
Buscamos la línea de «max_input_vars» y consultamos su valor.
Editando php.ini
Una forma de cambiar el valor es editar el php.ini
Podemos acceder a él a través de FTP o de SSH, aunque es posible que no tengamos suficientes permisos para hacerlo. En ese caso, podremos forzar un cambio en el .htaccess.
Por FTP
El archivo info.php que hemos creado en el punto 1, nos dirá la ruta donde está:
Por SSH
[Te puede interesar: Cómo acceder a SSH]
Tras identificarnos, escribimos el siguiente comando en la consola:
vi /etc/php.ini
Buscamos la línea en cuestión, la modificamos, guardamos los cambios:
:wq
Y reiniciamos el servidor:
/etc/init.d/httpd restart
Cambiar max_input_vars en htaccess
[Te puede interesar: No se muestra el archivo htaccess en WinSCP]
Si tenemos permisos FTP pero no los suficientes como para acceder a la ruta del php.ini, podemos buscar el archivo .htaccess en la raíz de nuestro site y editarlo añadiendo la siguiente línea:
php_value max_input_vars 3000
Donde 3000 es el valor que queramos asignar, siempre mayor que el que tenemos, claro.
De esa forma quedará algo como:
php_value max_input_vars 3000 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f etc
Guardamos y volvemos a subir al FTP.
¡OJO! Recomendamos hacer siempre copias de seguridad de cualquier archivo que se vaya a editar!
Incrementar max_input_vars en Plesk
Si tenemos un panel de control tipo Plesk en nuestro servidor, podremos incrementar max_input_vars de manera muy sencilla.
Para ello debemos loguearnos, dirigirnos a Dominios -> El Dominio de la web que nos haya lanzado el error -> Configuración PHP -> Directivas adicionales
Y escribir:
max_input_vars = 3000
O el valor que necesitemos. Aplicamos, aceptamos ¡y listo!
¿Por qué se produce el error si no he modificado el script y antes funcionaba bien?
La versión de PHP 5.3.9 incluyó esta limitación en una actualización de seguridad, cuyo valor por defecto es de 1000.
La razón de que se incorporase fue paliar el daño que causaban los scripts que envían miles de consultas a través de los formularios PHP con el fin de hakear el sistema.
Por esa misma razón, tener max_input_vars con valores muy altos, no es en absoluto recomendable.
¿Te has atascado en algún punto? En los comentarios te ayudamos! Y si te ha gustado el artículo, ¡compártelo!
Escribir comentario