allowed memory size exceeded – jelentése és megoldása (PHP)

Allowed memory size exhausted PHP hiba: memory_limit módosítása vagy kódoptimalizálás a memóriahasználat csökkentéséhez.

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!