PHP Fatal error: Allowed memory size of 33554432 bytes exhausted
Aceasta este o eroare care pare sa puna la incercare multi coderi php incepatori, asa ca dupa ce am raspuns de mai multe ori la aceasta intrebare pe forumuri m-am gandit sa scriu acest post pentru ca data viitoare sa dau acest link fara sa mai scriu aceasi explicatie din nou, sau poate doamne ajuta o sa caute pe google si o sa gaseasca aceasta pagina.
Mai intai sa intelegem de ce aparea aceasta eroare, daca nu v-ati dat seama din titlu, ea apare fiindca scriptul tau foloseste mai multa memorie decat e alocat in mod normal unui script php. Aceasta se intampla din cateva motive pe care le voi enumera acum :
- Output-ul scriptului tau ( HTML ) este prea mare ( se intampla destul de rar )
- scriptul foloseste memoria peste limita datorita varaibilelor folosite sau cererilor facute ( variabile POST FILES etc. – cea mai frecventa cauza )
- Exista un bug in scriptul tau care face ca scriptul sa consume asa de multa memorie
Acum nu trebuie sa te sperii, nu este o eroare asa de grava si poate fi remediata chiar foarte usor deobicei. Pentru a rezolva problema poti incerca ormatoarele :
- sa optimizezi scriptul ca sa nu mai manance atata memorie ( destul de logic nu ? )
- sa cauti eventualele bug-uri care ar putea cauza folosirea excesiva a memoriei
- sa minimizezi output-ul scriptului
- sa maresti varaibila de configurare php memory_limit fie in php.ini ( daca ai acces ) sau chiar in scriptul php folosind functia ini_set() ( ex: ini_set(‘memory_limit’,’32MB’); )
Limita default de 8MB a fost implementata in php pentru a opri scripturile de a rula atunci cand incep sa consume o cantitate de memorie prea mare din memoria totala a serverului, lucru care daca ar fi lasat sa continue ar putea cauza caderea serverului. Metoda cea mai buna de a corecta aceasta eroare ar fi de a optimiza scriptul php si a cauta eventulele bug-uri, decat de a mari limita de memorie metoda intradevar mai usoara si adoptata de foarte multi coderi ( desigur sunt si cazuri cand aceasta este singura solutie ) .
Sper ca acest articol v-a fost de ajutor si astept comentariile voastre.
Unde gasesc fisierul php.ini ? Cum am acces la el ? Nu pot uploada fisiere mai mari de 64 de MB.
@Gabi
php.ini este in configurarea serverului, si daca ai un cont shared de hosting nu o sa ai acces la el … dar poti cu functia ini_set
eu folosesc wordpress si imi apare eroare cand instalez un plugin mai complex, tot asa am un cont share, sti cumva unde dau de ini_set() ? sau ar fi mai bine sa vorbesc direct cu tipul de la host?
ini_set este o functie PHP care trebuie inserata in codul sursa