Cum să rezolvi PHP Eroare fatală: dimensiunea de memorie admisă de 8388608 octeți epuizată

Una dintre cele mai frecvente și frustrante eroriîntâlnită de codificatorii PHP scrie: „Eroare fatală: dimensiunea de memorie admisă de 8388608 octeți epuizată ...” urmată de ceva de genul „(încercat să alocăm byte XXXX) în /home/www/file.module pe linia 12.” Această eroare PHP fatală se decuplează pentru că, implicit, PHP are o limită de utilizare a memoriei de 8 MB pentru orice script dat. Acesta este un lucru bun, de fapt, pentru că nu doriți ca un script PHP necinstit să-și dea jos serverul prin acoperea toată memoria. Dar, ocazional, veți avea un script PHP care depășește în mod normal limita de 8 MB (să spunem, pentru import sau încărcare). Pentru a rezolva mesajul de eroare „Eroare fatală: dimensiunea de memorie permisă de 8388608 octeți epuizați ...”, introduceți această linie de cod în scriptul dvs. în partea de sus:

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

memory_limit

Acest lucru vă va seta limita de memorie la 16 MB, mai degrabăde 8 MB. Puteți și trebuie să jucați cu acest număr, astfel încât să fie cât mai scăzut posibil fără a repeta acel mesaj de eroare. Aceasta va modifica doar limita de memorie pentru respectivul fișier PHP.

În mod alternativ, puteți modifica fișierul dvs. php.ini până la limita de memorie. Acest lucru va afecta toate scripturile de pe serverul dvs. Pur și simplu deschideți php.ini și găsiți linia care scrie „memory_limit” și modificați-o:

memory_limit = 16M

Eroare fatală: dimensiunea memoriei permise de 134217728 epuizată

Am observat în propriul meu PHP.Fișier ini că valoarea mea implicită este mult mai mare la 128M. Așadar, dacă aș primi vreodată acest mesaj de eroare, s-ar citi: „Eroare fatală: dimensiunea memoriei permise de 134217728 octeți epuizată ...” și, evident, ar fi o problemă mult mai mare. Dar are aceeași soluție ca „Eroare fatală: dimensiunea de memorie permisă de 8388608 octeți epuizată ...” sau „Eroare fatală: dimensiunea permisă a memoriei de 16777216 octeți epuizată ...” sau orice altceva. Aparent, memoria implicită memory_limit a fost crescută de la 8M la 16M în PHP 5.2.0 și este acum 128M pentru PHP 5.3.0, ceea ce ar explica de ce este posibil să nu primiți acest mesaj de eroare.

De asemenea, puteți dezactiva limita de memorie setând memory_limit la –1 în PHP.ini.

memory_limit = -1

Aceasta nu este, de obicei, o idee bună, din motive evidente.

Notă: Puteți utiliza, de asemenea, linia memory_limit în pagina .htaccess.

Acum, nu uitați, aceasta este doar o soluție. Script-ul dvs. PHP ar trebui nu să depășească 8 MB, cu excepția cazului în care încărcați fișierele saufac altceva care, în mod evident, preia o mulțime de utilizare a memoriei. Ceea ce ar trebui să faceți cu adevărat este să încercați să aflați de ce scriptul dvs. utilizează atât de multă memorie și să încercați să-l repari. O modalitate de a descoperi câtă memorie este folosită de scriptul dvs. PHP este de a utiliza funcția memory_get_usage () PHP. Pur și simplu faceți ecou în orice punct al scriptului dvs. pentru a afla unde se învârte utilizarea memoriei dvs.:

echo memory_get_usage ();

Dacă primiți acest mesaj de eroare în Drupal sau Joomla, vinovatul probabil este un modul sau un pachet nou. De exemplu, în Drupal, pagina de admin / module se încarcă fiecare modul în instalația Drupal, care poate fi obținutpăros dacă un modul personalizat este buggy, corupt sau hacked. Încercați să dezactivați modulele unul câte unul pentru a identifica care a adus petrecerea. De asemenea, unii furnizori de găzduire vor ignora încercările dvs. de a modifica limitele de memorie pentru codul dvs. PHP, astfel încât ar putea fi necesar să contactați asistența de găzduire pentru a vă ajuta. Am găsit uneori că trebuie să editez fișierul php.ini și uneori să introduc codul în fișierul .htaccess. În orice caz, sperăm că aceste informații sunt suficiente pentru a vă pune pe drum!

0

Articole similare

Lasa un comentariu