Chyby vo Wordpress - Fatal Error - Out of Memory

Problém s nedostatkom pamäte býva častý problém vo Wordpress. Ak pri práci vo Wordpress narazíte na chybové hlásenie typu:

Fatal error: Out of memory (allocated 52428800) tried to allocate 35560 bytes)
in /.../wp-includes/abc.php on line 123

prípadne

Fatal error: Allowed memory size of...

znamená to, že niečo (či už inštalácia alebo prevádzka šablóny alebo nejakého pluginu) vyčerpalo všetku dostupnú pamäť vyhradenú pre Vašu doménu.

V prípade hlásení typu Out of Memory, môžete použiť na internete rôzne kalkulačky, ktoré Vám prepočítajú aký limit ste dosiahli a o koľko kB (MB) skript presiahol limit, zadajte hodnotu z chybovej hlášky (byty) a hodnotu dostanete prepočítanú na megabyty. Kalkulačiek alebo konvertorov je veľa, môžete skúsiť napr. Byte Conversion tool, Byte Converter alebo Bit Calculator.

Existuje však niekoľko možností, ako tento nedostatok odstrániť.

 

Prvý krok - zistenie a nastavenie verzie PHP

Najprv si zistite akú verziu PHP používate, podľa toho si skontrolujte aké hodnoty máte zadané v súbore php.ini. Ak používate staršiu verziu ako napr. PHP 5.5, PHP 5.4, prípadne staršie, najprv odporúčame otestovať chod webu minimálne na verzii PHP 5.6, ideálne 7.4.

Všeobecne odporúčame, aby ste si Wordpress a pluginy aktualizovali na verziu plne kompatibilnú s PHP 7.4, príp. 7.3, Tieto verzie PHP majú vyššie povolené limity:
 

memory_limit = 512M
upload_max_filesize = 256M
post_max_size = 256M

Tieto hodnoty by mali stačiť pre každú inštaláciu Wordpress.

TIPVo vlastnom záujme sa snažte optimalizovať Wordpress tak, aby ste používali čo najnovšiu verziu PHP. Pravidelne aktualizujte nielen samotný Wordpress, ale aj používané pluginy. Zastaralé pluginy, ktorých vývoj nepokračuje, odinštalujte a nahraďte alternatívnymi riešeniami.

 

Ak nemôžete používať PHP 7.3 a novšie, pre staršie verzie PHP existuje riešenie:

V súbore php.ini, ktorý používate k aktuálnej verzii PHP (7.2 a staršie), ktorú máte nastavenú. Nás budú zaujímať hodnoty, ktoré nájdete na začiatku súboru:
 

[PHP]

max_execution_time = 80  ; Maximum execution time kazdeho scriptu, v sekundach
max_input_time = 60      ; Maximum amount of time each script may spend parsing request data
memory_limit = 300M       ; Maximum amount of memory a script may consume
display_errors = On      ; stdout (On) - Display errors to STDOUT
log_errors = Off         ; Log errors into a log file (server-specific log, stderr, or error_log (below))
upload_max_filesize = 40M ; Maximum allowed size for uploaded files.
post_max_size = 40M

pre kontrolu aktuálneho nastavenia veľkosti pamäte nájdite položku:

memory_limit =

memory limit je nastavený na 300 MB (čo by ste mali vidieť aj v súbore) - platí len pre PHP 7.2 a staršie) Nastavenie určuje koľko MB pamäte môžu spotrebovať na svoj beh skripty. Limit sa týka celej domény, vrátane subdomén.

 

Majte na pamäti, že 300 MB je limit vyhradený pre celú Vašu doménu, túto pamäť využíva samotné PHP a rozšírenia servera - v súbore php.ini si nepoužívané rozšírenia môžete vypnúť a tak niečo na pamäti ušetriť.

Ak máte memory_limit nastavený na 300M, tu nepotrebujete nič meniť, máte nastavený maximálny možný limit a aj keby ste túto hodnotu zvýšili, nebude to mať žiadny efekt.

Po každej úprave súboru php.ini nezabudnite reštartovať FastCGI pre PHP! Na danom odkaze nájdete aj spôsob, ako si môžete preveriť aktuálnu verziu PHP na svojej doméne.

 

Druhý krok - úprava súboru wp-config.php

V prípade, ak po úpravách php.ini máte stále nedostatok pamäte, skúste vo Wordpress napevno nastaviť maximálny možný limit. Ten totiž v základných nastaveniach pracuje tak, ako keby mal k dispozícii limit 64 MB.

Prihláste sa na Vaše FTP a v adresári, kde máte Wordpress nainštalovaný, nájdite súbor wp-config.php, ktorý si stiahnite do počítača, otvorte ho v nejakom editore a niekde okolo riadku 82 nájdite položku

/* That's all, stop editing! Happy publishing. */

hneď nad ňu vložte toto:

define( 'WP_MEMORY_LIMIT', '300M' );

Tento kód "prikáže" Wordpress, aby využíval pamäť až do 300 MB. Súbor uložte a vráťte na server, na pôvodné miesto. Ak ani v tomto prípade problémy s nedostatkom pamäte nezmiznú, v prípade inštalácie šablón alebo pluginov odporúčame kontaktovať ich autorov

 

Problémy so subdoménami

Ak nastane prípad, že pre hlavnú doménu máte nastavenú verziu PHP 5.x a pre subdoménu PHP 7.x, tak v tomto prípade sa pre subdoménu vyhradí pamäť maximálne 50 MB. Ak nastavíte rovnakú verziu pre celý web, tak aj pre subdomény bude vyhradená maximálna pamäť 300 MB. V prípade problémov kontaktujte našu technickú podporu support@exohosting.sk