Homepage » Come » Come risolvere PHP Errore fatale Consentita la dimensione della memoria di 838.8608 byte esaurita

    Come risolvere PHP Errore fatale Consentita la dimensione della memoria di 838.8608 byte esaurita

    Uno degli errori più comuni e frustranti riscontrati dai codificatori PHP è: "Errore irreversibile: dimensioni di memoria consentite di 8388608 byte esauriti ..." seguito da qualcosa di simile "(provato ad allocare XXXX byte) in /home/www/file.module on line 12. "Questo errore fatale di PHP si verifica perché, per impostazione predefinita, PHP ha un limite di utilizzo della memoria di 8 MB per ogni dato script. Questa è una buona cosa, in realtà, perché non vuoi che uno script PHP disonesto faccia cadere il tuo server tracciando tutta la memoria. Ma occasionalmente, avrai uno script PHP che normalmente supera il limite di 8 MB (per esempio, per l'importazione o il caricamento). Per risolvere il problema con il messaggio di errore "Errore irreversibile: dimensione di memoria consentita 8388608 byte esauriti ...", inserire semplicemente questa riga di codice nello script in alto:

    ini_set ( “memory_limit”,”16M“);

    Questo imposterà il limite di memoria a 16 MB, anziché 8 MB. Puoi, e dovresti, armeggiare con questo numero in modo che sia il più basso possibile senza ripetere quel messaggio di errore. Questo modificherà solo il limite di memoria per quel particolare file PHP.

    In alternativa, è possibile modificare il file php.ini fino al limite di memoria. Ciò influirà su tutti gli script sul tuo server. Basta aprire php.ini e trovare la riga che legge "memory_limit" e modificarla:

    memory_limit = 16M

    Ho notato nel mio file PHP.ini che il mio valore predefinito è molto più alto a 128M. Quindi, se dovessi ricevere questo messaggio di errore, leggerebbe: "Errore irreversibile: dimensione di memoria consentita di 134217728 byte esauriti ..." e ovviamente è un problema molto più grande. Ma ha la stessa soluzione di "Errore irreversibile: dimensione di memoria consentita di 8388608 byte esauriti ..." o "Errore irreversibile: dimensioni di memoria consentite di 16777216 byte esauriti ..." o qualsiasi altra cosa. Apparentemente, il default memory_limit è stato aumentato da 8M a 16M in PHP 5.2.0 ed ora è 128M per PHP 5.3.0, il che spiegherebbe perché non si può ottenere questo messaggio di errore.

    È anche possibile disabilitare il limite di memoria impostando memory_limit su -1 in PHP.ini.

    memory_limit = -1

    Di solito non è una buona idea, per ovvi motivi.

    Nota: puoi anche utilizzare la linea memory_limit nella tua pagina .htaccess.

    Ora, ricorda, questa è solo una soluzione. Davvero, lo script PHP dovrebbe non avere un valore superiore a 8 MB, a meno che tu non stia caricando file o facendo qualcos'altro che ovviamente richiede un sacco di memoria. Quello che dovresti davvero fare è cercare di capire perché il tuo script stia usando così tanta memoria e cerchi di risolverlo. Un modo per capire quanta memoria usa lo script PHP è usare la funzione PHP memory_get_usage (). Basta farlo eco in qualsiasi punto del tuo script per scoprire dove si sta verificando l'utilizzo della memoria:

    echo memory_get_usage ();

    Se ricevi questo messaggio di errore in Drupal o Joomla, il probabile colpevole è un nuovo modulo o pacchetto. Ad esempio, in Drupal, la pagina di amministrazione / moduli viene caricata ogni modulo nella tua installazione Drupal, che può diventare peloso se un modulo personalizzato è bacato, corrotto o hackerato. Prova a disattivare i moduli uno per uno per identificare chi sta causando la festa. Inoltre, alcuni provider di hosting ignoreranno i tuoi tentativi di modificare i limiti di memoria per il codice PHP, quindi potresti dover contattare il tuo supporto di hosting per assisterti. Ho trovato a volte ho bisogno di modificare il file php.ini ea volte inserire il codice nel file .htaccess. In ogni caso, spero che queste informazioni siano sufficienti per farti arrivare!