Condividi!

Anche quando vengono prese tutte le dovute precauzioni e si seguono le migliori best practicies, lo sviluppo di una web app può portare le sue sorprese.
Talvolta non basta nemmeno utilizzare i sistemi di test automatizzati più appropriati e di ultima generazione (PHPUnit e Mink+Behat, tanto per dirne una) per poter dormire “sonni tranquilli”.

Cosa accade, ad esempio, se utilizziamo un form con 1500 campi e tentiamo di salvare i dati? Apparantemente nulla di particolare, tranne quando si passa alla verifica dei dati salvati. Molti server, infatti, impostano, all’interno del file php.ini, un valore di default che limita il numero di dati in input da elaborare.
Questo parametro prende il nome di “max_input_vars” e, molto spesso, è impostato con un valore pari a 1000, soprattutto negli shared hosting.

Non di rado accade che il sistema non generi alcun errore lato browser, dunque non vi accorgerete del problema, se non controllando “manualmente” i dati elaborati.
Tale errore, ad ogni modo, viene registrato nei file error.log (o similari) che l’hosting provider mette a vostra disposizione.
(Quando testate una web app o un qualsiasi Sito Web, date sempre un occhiata a questi file!)

Come risolvere il problema?

E’ necessario modificare il file php.ini aumentando tale valore affinché soddisfi le vostre richieste.
Nei sistemi di hosting condiviso talvolta non è possibile accedere a tale file.
In questi casi è necessario contattare il provider e chiedere se e come è possibile modificare tale file.
Nel caso in cui la cosa non fosse possibile, sarete costretti a cambiare provider.

Per esperienza personale posso garantirvi (almeno ad oggi) che il provider bluehost vi permette di personalizzare a piacimento il file php.ini.
E’ sufficiente “copiare” il file principale, modificarlo, ed “incollarlo” nella root del sito/app che state realizzando.
In questo modo sarà possibile mantenere inalterato il sistema per tutti gli altri siti/apps che “girano” all’interno dell’hosting, personalizzando soltanto quella che richiede una flessibilità maggiore.