Ago
14

Come aumentare il memory limit di PHP

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:

  1. 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
  2. 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.
  3. 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.

10 commenti a “Come aumentare il memory limit di PHP”


  1. 1 Giorgio Tedesco
    20 Novembre 2008 alle 1:05 Quota

    :) Grande articolo… ^^ c’è la possibilità  che non funzioni anche il 3° metodo??? Grazie.. Ciao..

  2. 2 Paolo
    20 Novembre 2008 alle 9:13 Quota

    @Giorgio Tedesco: ma grazie! :)

    A me ha sempre funzionato..!

    Ciao, Paolo.

  3. 3 federico
    21 Marzo 2009 alle 0:17 Quota

    con tophost non funziona neppure uno dei 3

  4. 4 Michele
    08 Aprile 2009 alle 15:45 Quota

    federico ha scritto:

    con tophost non funziona neppure uno dei 3

    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!). :)

  5. 5 Paolo
    14 Aprile 2009 alle 8:33 Quota

    @Michele: mi sembrava infatti.. grazie della conferma ;-)

    Ciao, Paolo.

  6. 6 Luigi Massa
    03 Luglio 2012 alle 16:44 Quota

    php_value memory_limit 64M

    :)

  7. 7 Luigi Massa
    03 Luglio 2012 alle 16:45 Quota

    Luigi Massa ha scritto:

    php_value memory_limit 64M

    php_value memory_limit 64M

  8. 8 Bettabi
    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 :)

  9. 9 angelo
    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 ??

  10. 10 Fabrizio Rocca
    26 Settembre 2016 alle 5:54 Quota

    Grazie mille per la guida, ora finalmente ho risolto l’errore

Lascia un commento

Nome

Email (non verrà pubblicata)

Sito web (opzionale)

Quanto fa 2 + 4 ? (protezione antispam)





Hai bisogno di un sito web?

Web&Dintorni

Vuoi collaborare a questo blog?

Ogni tipo di collaborazione è benvenuta!


Scrivimi all'indirizzo paolo.gatti@gmail.com o invia un messaggio sulla pagina Facebook!