Upraveno 6 prosince, 2023 00:32
Populární a velmi hojně používaný redakční systém WordPress dostal tento týden velkou aktualizaci na verzi 6.2. A jako s každou větší aktualizací WordPressu, i zde nastalo poměrně hodně problémů. Tedy abych byl přesný, ne u každého. Co jsem obecně zaznamenal, tak nejvíce problémů nastalo s vyčerpáním paměti na sdíleném hostingu, kde nelze upravit php.ini. Co tedy dělat, po aktualizaci na WordPress 6.2 a fatal error: allowed memory size?
WordPress 6.2 a fatal error: allowed memory size. Co se vlastně přihodilo?
fatal error: allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes) in /web/htdocs/www.mojedomena.cz/home/www/wp-includes/plugin.php on line 203
Zjednodušeně řečeno, na každém hostingu máte přidělenou určitou velikost paměti, tzv. memory limit. Každý plugin i samotný WordPress či šablona si z této paměti kousek vezme. Po aktualizaci na WordPress 6.2 se ale mnoho lidem z důvodu nekompatibility nové verze WordPressu a zbytku obsahu stalo to, že tuto paměť vyčerpali. WordPress potom nemůže dál pracovat a skončí chybou.
Čím u této chyby rozhodně začněte? Kontrolou revizí WordPressu.
První, na co se zaměřte jsou revize WordPressu. K čemu takové revize WordPressu slouží jsem pospal zde: WordPress a revize. Mohlo se stát, že máte ve svém WordPressu uloženo již velké množství revizí, díky kterým nová verze systému zkolabovala. Pokud revize čas od času nesmažete, jejich počet zásadním způsobem narůstá a dojde nakonec k problému s pamětí. Je tedy pravděpodobné, že problém s pamětí po přechodu na verzi 6.2 způsobují právě revize. Pokud máte dostupnou alespoň administraci WordPressu, využijte můj návod a plugin Sweep.
Pokud administrace dostupná není, je možné smazat revize přímo v databázi přes nástroj PhpMyAdmin. V něm bude nutné provést tento příkaz:
DELETE FROM wp_posts WHERE post_type = "revision";
Jak opravit chybu fatal error: allowed memory size?
Oprava je možná dvěma způsoby. Závisí to však na tom, zda máte možnost navýšit paměť či nikoliv. To můžete obecně provést většinou pouze u vlastního serveru, kde máte přístup k souboru php.ini. U sdílených hostingů je obvykle paměť nastavená na pevno a změnit nejde. Pokud tedy máte tu možnost, může být řešením problému navýšení paměti. Je to řešení polovičaté, ale problém to vyřeší. Určitě to však nevyřeší příčinu.
Memory limit tedy můžete navýšit úpravou php.ini, nebo také souborem .htaccess (pokud to máte dovolené). V php.ini to uděláte tak, že navýšíte v tomto souboru a řádku hodnotu např. z 256 na 512.
Pokud používáte Apache web server, můžete najít umístění souboru php.ini následovně:
Otevřete soubor httpd.conf nebo apache2.conf (najdete ho obvykle v adresáři /etc/httpd/ nebo /etc/apache2/)
Hledejte řádek obsahující direktivu PHPIniDir nebo php_ini
Pokud tam tato direktiva není, můžete vyzkoušet hledání souboru php.ini v systémovém adresáři /etc/php/
V případě, že používáte jiný web server, může být umístění souboru php.ini jiné. Pro více informací se obraťte na dokumentaci vašeho konkrétního web serveru.
U .htaccess souboru, pokud je toto na serveru povoleno, se navýšení provede touto direktivou:
php_value memory_limit 512M
Musím podotknout, že navýšení pomocí souboru .htaccess musí být povoleno. Může se jednat o directivu, která je zakázaná a způsobí problémy.
Jak tuto chybu opravit na sdíleném hostingu, kde nelze navýšit memory limit?
Naproti tomu u sdíleného hostingu možnost navýšit memory limit nemáte. Tedy ne obvykle. Co tedy můžete udělat zde? Mnoho neuděláte, buďme upřímní. Jediné řešení je provést obnovu WordPressu ze zálohy (FTP i MySQL) a zároveň zakázat automatické aktualizace. Pokud byste aktualizace nezakázali, provede WordPress do několika minut opětovnou aktualizaci na verzi 6.2 a skončíte na stejné chybě. Zákaz aktualizací se provádí přes soubor wp-config.php, ke kterému se dostanete přes FTP. Je uložený v kořenovém adresáři WordPressu a je to konfigurační soubor. Do něj vložíte tento řádek:
define( 'WP_AUTO_UPDATE_CORE', false );
Pokud byste chtěli zakázat i aktualizaci pluginů a šablony, přidejte tyto řádky:
add_filter( 'auto_update_plugin', '__return_false' );
add_filter( 'auto_update_theme', '__return_false' );
WordPress 6.2 a fatal error: allowed memory size. Jak tomu zabránit?
Zde napíšu několik bodů, kterých je dobré se držet.
- hlídejte si, jaké pluginy do systému instalujete, a neřešte každý problém novým pluginem
- u pluginů se vždy dívejte na datum poslední aktualizace. Pokud plugin nebyl dlouhou dobu aktualizován, může být v nové verzi problémový
- dávejte pozor na šablony a volte ty, které mají širokou základnu uživatelů a vývojář komunikuje
- provádějte pravidelné zálohy webu a databáze
Pokud ale již takovou chybu na webu objevíte a budete nuceni web obnovit ze zálohy, je dobré zjistit, kde problém vznikl. V první řadě zkuste alespoň dočasně změnit šablonu vzhledu. Nejlepší bude, když využijete šablonu WordPressu vlastní, tedy nějakou ze základních, které tento redakční systém nabízí. Tím nejlépe vyloučíte situaci, že k problému s pamětí dochází u nepodporované šablony vzhledu.
Pokud problém nebude ve vzhledu, bude nutné pátrat v pluginech. Zkuste se tedy zaměřit na to, jaké používáte pluginy a do jaké verze WordPressu jsou testované. Případně také prozkoumejte, kdy u nich vývojář provedl poslední upgrade. Staré a neaktualizované pluginy vyměňte za alternativu, o kterou se vývojář stará.
WordPress 6.2 a fatal error: allowed memory size – závěr
Jak můžete vidět z výše uvedeného, mnohdy lze problému zamezit už jen tím, že budete do systému instalovat pluginy, které jsou na novou verzi připravené. To samé si hlídejte u šablon vzhledu. Plugin, který nebyl testován na poslední verzi, kterou používáte, bude mít v následující s největší pravděpodobností problém. A vývojář zřejmě reagovat nebude. Pokud ano, jistě ne pružně. U prověřených pluginů a šablon, kde vývojář testuje na beta verzi nového WordPressu máte alespoň elementární jistotu, že při vydání ostré verze nového WordPressu budou problémy eliminovány. Problém pak nemusí vůbec nastat.
Web je vytvářen s pečlivostí k obsaženým informacím. Snažím se poskytovat kvalitní a užitečný obsah, který ostatním pomáhá, nebo je inspiruje. Pokud jste spokojeni s mou prací a chtěli byste mě podpořit, můžete to udělat prostřednictvím jednoduchých možností.
Byl pro Vás tento článek užitečný?
Klikni na počet hvězd pro hlasování.
Průměrné hodnocení. 0 / 5. Počet hlasování: 0
Zatím nehodnoceno! Buďte první
Je mi líto, že pro Vás nebyl článek užitečný.
Jak mohu vylepšit článek?
Řekněte mi, jak jej mohu zlepšit.
Odebírejte Newsletter
Buďte v obraze! Připojte se k odběru newsletteru a buďte první, kdo získá nejnovější informace přímo do vaší e-mailové schránky. Sledujte aktuality, exkluzivní události a inspirativní obsah, přímo na Vašem e-mailu.