Ayusin ang "Allowed Memory Size Exhausted" sa WordPress
Kung ipinapakita ng site mo ang Fatal error: Allowed memory size of 268435456 bytes exhausted, idagdag ang linyang ito sa wp-config.php sa itaas ng / That's all, stop editing! /
Nailathala
Kung ipinapakita ng site mo ang Fatal error: Allowed memory size of 268435456 bytes exhausted, idagdag ang linyang ito sa wp-config.php sa itaas ng komentong /* That's all, stop editing! */: define( 'WP_MEMORY_LIMIT', '256M' );. Nakakapagbalik ito ng karamihan sa mga site sa loob ng wala pang isang minuto. Pero basahin mo muna ang natitirang bahagi ng pahinang ito bago ka umalis, dahil ang pagtataas ng limitasyon ay diagnostic, hindi lunas. Kung bumalik ang crash sa mas mataas na numero, ang totoong problema ay code na kumakain ng memory nang walang hangganan, at ang mas mataas na ceiling ay nagbibigay lang dito ng mas mahabang lubid.
Ano talaga ang ibig sabihin ng error
Sinusubaybayan ng PHP kung gaano karaming memory ang na-allocate ng bawat request. Kapag sinubukan ng isang request na mag-allocate lampas sa memory_limit na naka-set sa php.ini (o na-override ng WordPress), agad na pinapatay ng PHP ang request gamit ang fatal error at ini-print ang byte count kung saan ito namatay. Ang 268435456 bytes ay 256M. Ang 134217728 ay 128M. Ang 536870912 ay 512M. Ang numerong nasa likod ng “tried to allocate” ay nagsasabi sa iyo ng laki ng huling patak na umapaw, hindi ng laki ng problema.
Naglalagay ang WordPress ng sarili nitong mga limitasyon sa ibabaw ng PHP. Ang WP_MEMORY_LIMIT (default 40M, o ang PHP limit kung mas mataas) ang namamahala sa front end. Ang WP_MAX_MEMORY_LIMIT (default 256M) ang namamahala sa mga operasyon sa admin side tulad ng media library at mga plugin update, na talagang nangangailangan ng mas marami. Tinatawag ng WordPress ang ini_set('memory_limit', ...) sa pag-load base sa mga constant na ito — pero kung pinapayagan lang ng host mo ang ini_set, at hanggang sa hard cap na itinakda ng host mo. Ang huling bahaging iyon ang dahilan kung bakit minsan mukhang walang epekto ang pag-edit sa wp-config.php.
Ayusin ito, ayon sa pagkakasunod
1. Itaas ang WordPress limit sa wp-config.php. Ito ang unang dapat subukan dahil nababalik ito at walang ibang naaapektuhan.
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
Kung hindi ka sigurado kung saan ilalagay ang mga linyang ito o gusto mong maitakda nang tama ang ibang karaniwang constant sa parehong pagkakataon, ang aming wp-config generator ay gumagawa ng malinis na block na maaari mong i-paste. Mahalaga ang paglalagay — ang anumang nasa ibaba ng linyang “stop editing” ay hindi papansinin.
2. Kung wala itong ginawa, kina-cap ng host mo ang PHP. Itaas ang memory_limit sa PHP level. Sa php.ini:
memory_limit = 256M
Sa maraming shared host, hindi mo direktang mae-edit ang php.ini. Subukan ang isang .user.ini file sa web root mo sa halip, o itakda ito sa pamamagitan ng .htaccess sa isang Apache/mod_php setup:
php_value memory_limit 256M
Tandaan na ang php_value sa .htaccess ay naghahagis ng 500 error sa nginx o sa mga PHP-FPM setup, dahil ito ay isang Apache/mod_php directive. Kung nakakakuha ka ng 500 pagkatapos itong idagdag, iyon ang dahilan — alisin ito at gamitin ang .user.ini.
3. Kumpirmahin ang halagang aktwal na live. Huwag mong pagkatiwalaan ang na-edit mo; pagkatiwalaan mo ang ini-report ng PHP. Maglagay ng one-line file sa web root mo:
<?php echo ini_get('memory_limit');
I-load ito sa browser, basahin ang halaga, tapos i-delete ang file. Kung nakasaad pa rin na 128M pagkatapos mong i-set ang 256M, ini-override ka ng host mo at kailangan mo silang kontakin o gamitin ang setting sa control panel nila.
Ang bahaging nilalaktawan ng karamihan sa mga gabay
Ang pagtataas ng limitasyon ay diagnosis. Ganito basahin ang resulta.
Kung nag-set ka ng 256M at nanatiling gumagana ang site sa ilalim ng normal na trapiko, may lehitimong ceiling ka na masyadong mababa — karaniwan sa mga site na may malalaking media library, WooCommerce, o page builder. Tapos ka na.
Kung nag-set ka ng 256M at nag-crash uli, tapos 512M at nag-crash uli, itigil na ang pagtaas. Ang normal na WordPress request ay hindi nangangailangan ng 512M. Kapag umaakyat ang paggamit ng memory nang walang ceiling, may umuulit o naiipon: isang plugin na naglo-load ng buong database table sa isang array, isang add_action na paulit-ulit na tina-trigger ang sarili nito, isang import routine na hinahawakan ang bawat row sa memory nang sabay-sabay, o dalawang plugin na nag-aaway sa loob ng parehong hook. Hindi inaayos ng pagtataas ng limitasyon ang isang walang-hangganang loop — inililipat lang nito ang crash nang ilang segundo mamaya at ginagawa itong mas mahirap i-reproduce.
Para mahanap ang salarin, i-deactivate ang lahat ng plugin at lumipat sa default theme tulad ng Twenty Twenty-Four. Kung tumigil ang error, i-reactivate ang isa-isa hanggang bumalik ito. I-on ang debug log para mahuli kung saan ito namatay:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Ang fatal line sa wp-content/debug.log ay pinapangalanan ang file at line number na nag-allocate ng huling chunk. Iyon ang kadalasang loop, o isang function call ang layo mula rito.
Ano ang hindi dapat gawin
Huwag i-set ang WP_MEMORY_LIMIT sa -1 o 1024M at kalimutan. Ang walang-limitasyong memory ay hindi inaayos ang isang leak; hinahayaan nitong kainin ng isang runaway request ang buong server, na maaaring mag-down ng bawat ibang site sa parehong box at magbigay sa iyo ng tawag mula sa host mo. Ang ceiling ay isang safety feature. Panatilihin ito.
Huwag i-paste ang ini_set('memory_limit', '512M') sa functions.php bilang pangunahing lunas. Masyado itong huli tumakbo para sa ilang failure — kung nangyayari ang crash habang naglo-load ang WordPress core bago mag-execute ang functions.php ng theme mo, hindi kailanman tatakbo ang linya. Mas maaga naglo-load ang wp-config.php at ito ang tamang lugar.
Huwag ipagpalagay na hosting problem ito at i-upgrade ang plan mo. Minsan tunay ngang kulang ang hosting. Madalas ang eksaktong parehong crash ay sumusunod sa iyo hanggang sa mas malaking plan dahil sumakay ang sanhi kasama ng mga plugin mo. I-rule out muna ang loop; libre ito.
Huwag itaas ang memory_limit para ayusin ang max_execution_time error. Magkaibang limitasyon ang mga ito na may magkaibang mensahe. Ang memory exhaustion ay nagsasabi ng “Allowed memory size … exhausted.” Ang timeout ay nagsasabi ng “Maximum execution time … exceeded.” Ang pagtaas ng maling isa ay nag-aaksaya ng isang hapon.
Nasiraan pa rin?
Kung nakumpirma mo nang ang live limit ay tunay na 256M o mas mataas, na-test na may lahat ng plugin na naka-off at isang default theme, at umuubos pa rin ito ng memory, may tunay kang leak na sulit habulin sa debug log sa halip na ceiling na sulit itaas. Kunin ang fatal line, tandaan kung aling plugin directory ito tumuturo, at iyon ang bug report mo. Ayusin muna ang baseline na wp-config.php constants mo gamit ang wp-config generator para alam mong naka-set ang mga limitasyon kung saan mo iniisip — tapos basahin ang log.