Pagina principala » Cum-Pentru a » Cum de a rezolva PHP Eroare fatală Dimensiunea permisă de memorie de 8388608 octeți epuizată

    Cum de a rezolva PHP Eroare fatală Dimensiunea permisă de memorie de 8388608 octeți epuizată

    Una dintre cele mai frecvente erori întâlnite de codificatorii PHP este: "Eroare fatală: dimensiunea permisă a memoriei de 8388608 octeți epuizați ..." urmată de ceva de genul "(încercat să aloce XXXX octeți) în /home/www/file.module on line 12. "Această eroare de eroare fatală apare deoarece, 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 scenariu PHP necinstit să vă aducă pe serverul dvs., făcând toate memoria. Dar, ocazional, veți avea un script PHP care depășește în mod normal limita de 8 MB (de exemplu, pentru importare sau încărcare). Pentru a rezolva eroarea "Eroare fatală: dimensiunea permisă a memoriei de 8388608 octeți epuizați ...", introduceți pur și simplu această linie de cod în script-ul dvs. în partea de sus:

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

    Acest lucru va seta limita de memorie la 16 MB, mai degrabă decât 8 MB. Poți, și ar trebui să fii cu acest număr, astfel încât să fie cât mai jos posibil, fără a repeta acest mesaj de eroare. Acest lucru va modifica doar limita de memorie pentru respectivul fișier PHP.

    Alternativ, puteți modifica fișierul php.ini pentru a 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 citește "memory_limit" și modificați-o:

    memory_limit = 16M

    Am observat in propriul fisier PHP.ini ca defaultul meu este mult mai mare la 128M. Deci, dacă aș primi vreodată acest mesaj de eroare, s-ar citi: "Eroare fatală: dimensiunea permisă a memoriei de 134217728 octeți epuizați ..." și, evident, o problemă mult mai mare. Dar are același lucru ca și "Eroare fatală: dimensiunea permisă a memoriei de 8388608 octeți epuizați ..." sau "Eroare fatală: dimensiunea permisă de memorie de 16777216 octeți epuizați ..." sau orice altceva. Aparent, memoria implicită a fost îmbunătățită 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 nu ați putea primi acest mesaj de eroare la toate.

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

    memory_limit = -1

    De obicei, aceasta nu este o idee bună, din motive evidente.

    Notă: De asemenea, puteți utiliza linia memory_limit în pagina .htaccess.

    Acum, amintiți-vă, este doar o soluție. Într-adevăr, scriptul dvs. PHP ar trebui nu să depășească 8 MB, cu excepția cazului în care încărcați fișierele sau să faceți altceva, care în mod evident ocupă o mulțime de utilizare a memoriei. Ce ar trebui să faci este să încerci să îți dai seama de ce scripturile tale utilizează atât de multă memorie și încearcă să o rezolvi. O modalitate de a afla cât de multă memorie este folosită de scriptul PHP este folosirea funcției PHP memory_get_usage (). Pur și simplu ecou în orice punct din script-ul dvs. pentru a afla în cazul în care utilizarea de memorie este spiking:

    echo memory_get_usage ();

    Dacă primiți acest mesaj de eroare în Drupal sau în Joomla, probabilul vinovat este un nou modul sau pachet. De exemplu, în Drupal, se încarcă pagina admin / modules fiecare modul în instalarea Drupal, care poate deveni păros dacă un modul personalizat este buggy, corupt sau hacked. Încercați să dezactivați modulele unul câte unul pentru a identifica care aduce părțile în jos. De asemenea, unii furnizori de hosting vor ignora încercările dvs. de a modifica limitele de memorie pentru codul dvs. PHP, astfel încât este posibil să aveți nevoie să contactați serviciul de găzduire pentru a vă ajuta. Am găsit câteodată că trebuie să editez fișierul php.ini și uneori să pun codul în fișierul .htaccess. În orice caz, sperăm că informațiile de aici sunt suficiente pentru a vă face pe drum!