Chiunque abbia smanettato un po’ con PHP, almeno una volta nella vita si sarà trovato davanti odiosissimo questo errore:
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1234 bytes) in /web/htdocs/www.sito.it/file.php on line 123
.. scaturito dal superamento dai limiti imposti nel file di configurazione di php (ovvero php.ini) dall’amministratore di sitema (il quale, nell’esempio preso in considerazione, ha dichiarato che, ogni pagina dello script php, non può allocare più di 8 Mb di memoria).
Ecco 3 modi possibili per risolvere il problema, lascio a voi la scelta sul quale si adatta meglio alle vostre esigenze:
- il caso più semplice è se siete voi gli amministratori del vostro server: in tal caso, nel file php.ini, impostate la variabile memory_limit ad un valore più alto di 8 Mb (io vi consiglio 16 o 32), poi riavviate il web server
- se, invece, avete un hosting e il vostro fornitore di servizi supporta il file .htaccess, potete aumentare la quantità di memoria direttamente in questo file (createlo se non esiste e piazzatelo nella radice del vostro spazio web) con la direttiva php_value memory_limit 16M (o 32M). Piccola nota dolente: purtroppo questo metodo non funziona con tutti gli hosting (ad esempio, per esperienza personale, posso dirvi con certezza che con Aruba non va), però, data la semplicità della procedura, un tentativo vale la pena di farlo lo stesso.
- se non siete riusciti a risolvere il problema con nessuna delle soluzioni precedenti, rimboccatevi le maniche e mettete mano al codice impostando, nella pagina php che provoca l’errore, l’istruzione ini_set(“memory_limit”,”16M”); (si, è necessario anche il ;) subito dopo il tag <? e prima di tutto il resto.
20 Novembre 2008 alle 1:05 Quota
:) Grande articolo… ^^ c’è la possibilità che non funzioni anche il 3° metodo??? Grazie.. Ciao..
20 Novembre 2008 alle 9:13 Quota
@Giorgio Tedesco: ma grazie! :)
A me ha sempre funzionato..!
Ciao, Paolo.
21 Marzo 2009 alle 0:17 Quota
con tophost non funziona neppure uno dei 3
08 Aprile 2009 alle 15:45 Quota
federico ha scritto:
Non mi sembra. Io avevo problemi con il plugin Events Manager per WordPress e il terzo metodo, quello che embedda l’impostazione della memory_limit dentro al codice PHP interessato, funziona (a proposito, grazie all’autore della mini guida!). :)
14 Aprile 2009 alle 8:33 Quota
@Michele: mi sembrava infatti.. grazie della conferma ;-)
Ciao, Paolo.
03 Luglio 2012 alle 16:44 Quota
php_value memory_limit 64M
:)
03 Luglio 2012 alle 16:45 Quota
Luigi Massa ha scritto:
php_value memory_limit 64M
27 Novembre 2013 alle 11:33 Quota
Ciao! Grazie per l’articolo, mi è stato utile!
Vorrei solo aggiungere che per MAMP il file da modificare per cambiare il limite si trova in:
applicazioni > MAMP > bin > php5.4.10 (o versione utilizzata) > conf > php.ini
Io mi sono sbagliata, cercando di modificare prima un file php.ini che era in un’altra cartella, magari a qualcuno è utile :)
31 Gennaio 2014 alle 16:50 Quota
php_value memory_limit 32M
volendo seguire il punto 2
su aruba…. come metto questo codice nel file .htaccess ?
in fondo alla pagina ? lo butto cosi ??
26 Settembre 2016 alle 5:54 Quota
Grazie mille per la guida, ora finalmente ho risolto l’errore