A allowed memory size exceeded hiba akkor fordul elő PHP-ben, amikor a script futása közben a rendelkezésre álló memória elfogy. Ez tipikusan Fatal error formában jelenik meg, és megakadályozza a szkript további végrehajtását. Mutatjuk, mikor jelenik meg, és hogyan javítható biztonságosan.
A hiba pontos formája
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 4096 bytes) in /path/to/file.php on line 123
Itt a 134217728 byte 128 MB-nak felel meg. Ez volt a script számára elérhető memória.
Mi okozza ezt a hibát?
- Hatalmas tömbök vagy objektumok a memóriában
- Végtelen ciklusok vagy rekurzív függvényhívások
- WordPress bővítmények inkompatibilitása
- Rosszul optimalizált fájlimportálás (pl. CSV, XML)
Példa hibás kódra
<?php
$data = file_get_contents('nagyon-nagy-fajl.csv');
$rows = explode("\n", $data); // több száz MB RAM
Megoldás 1: memóriahatár növelése programból
<?php
ini_set('memory_limit', '256M');
Ez az adott scriptre érvényes, de nem mindig elég, ha plugin okozza a problémát.
Megoldás 2: php.ini módosítása
memory_limit = 256M
Megoldás 3: .htaccess (Apache)
php_value memory_limit 256M
Ez működik, ha a szolgáltató engedi `.htaccess` szintű PHP beállításokat.
Megoldás 4: WordPress wp-config.php
define('WP_MEMORY_LIMIT', '256M');
Ez WordPress környezetben a leggyorsabb és legtisztább megoldás.
Mikor nem elég a memória növelése?
Ha a hiba rekurzió, plugin vagy végtelen ciklus miatt lép fel, a memória emelése csak tüneti kezelés. Érdemes debugolni a problémás részt, vagy plugin frissítést/eltávolítást végezni.
Kapcsolódó hibák
Külső forrás
PHP dokumentáció: memory_limit – PHP.net
Összefoglalás
Az allowed memory size exceeded hiba mögött a legtöbbször memóriazabáló struktúrák vagy beállítási korlát áll. Megoldása lehet a memória növelése, de gyakran mélyebb hibára utal. Nézz körül további PHP hibák között is!
