Lug 13 2007
Potenziale debolezza di php, memory limit
Casualmente mi sono imbattuto nel dover variare l’impostazione di memory limit su un server di cui non avevo il minimo accesso.
Solitamente infatti sono abituato a sviluppare su server Linux sui quali ho anche poteri di amministratore, in questo caso trattandosi di un hosting su server di un altro provider mi sono imbattuto nel dover aumentare memory_limit per poter far funzionare il noto CRM Sugar Force.
La variabile presente nel php.ini denominata memory_limit ha il compito di limitare il consumo di memoria massimo per uno script php in modo tale da evitare potenziali problemi al server web stesso in caso di cattiva gestione dello script o per qualche loop.
Per default tale valore è impostato ad 8 Mbyte, valore secondo me più che ragionevole.
In pratica Sugar Force richiede la bellezza di 32 Mbyte di memoria (se non erro) per poter funzionare.
Fatto sta che il provider in questione (giustamente) aveva l’impostazione di memory limit globale settata a 8 Mbyte e non funzionava una mazza…
Dubbioso sul poter realmente variare tale impostazione sono andato sul sito di php e nell’appendix ho scoperto quello che MAI mi sarei aspettato:
| memory_limit | “8M” | PHP_INI_ALL |
PHP_INI_ALL per intenderci indica che il valore è variabile da QUALUNQUE script php! Nemmeno come PHP_INI_PERDIR che indica invece che il valore è variabile o per directory da configurazione generale di apache o da .htaccess (se consentito Override da apache).
Insomma, nel caso specifico mi è anche andata bene perchà© ho potuto comodamente caricare in .htaccess “php_value memory_limit 64M” per poter far funzionare il CRM perà questa cosa per me ha aperto un forte dubbio su tale scelta fatta dagli sviluppatori di php e in particolare dalla Zend.
Fortunatamente la soluzione è abbastanza facile, è infatti sufficiente disabilitare l’Override di apache ([per altro impostazione di default] non rendendo effettive le direttive di .htaccess che vengono quindi ignorate) e disattivando da php.ini la possibilità di utilizzare la funzione ini_set().
Perà per un provider che eroga hosting per chiunque acquista uno spazio web (magari a prezzi stracciati) diventa limitativo e restrittivo.
Penso che un approccio diverso da parte della Zend e degli sviluppatori di php in merito a tale configurazione sarebbe più opportuno… almeno per le nuove versioni e configurazioni di default.
Ciao. Maxgrante
info[AT]massimo-caselli[DOT]com