Kategorie: Svět IT

Problémy s administrací Wordpressu

Problémy s administrací Wordpressu

V nedávné době jsem převzal ke správě webové stránky Krav Maga Guerrilla Group. Redakční systém Wordpress na kterém stránka běžela nebyl aktualitován od verze 1. Proto jsem provedl aktualizaci wordpressu a také šablony, která byla zastaralá. Nečekal jsem však, že dojde k problému, kdy se po aktualizaci stala část administrace wordpressu neaktivní. Jak v takovém případě postupovat, si ukážeme v tomto článku.

 

Na první pohled se může zdát, že vše funguje jak má. Stránka jako taková je plně funkční včetně všech instalovaných pluginů. Nicméně po přihlášení do administrace, jsem zjistil, že některé základní funkce administrace vůbec nevidím. Například Nastaveni > Obecné. V přiloženém obrázku můžete na pravé straně vidět, nekompletní administrátorské rozhraní a v pravé části pak jak by rozhraní mělo správně vypadat. Rozdíl je patrný na posledním řádku Časové pásmo, kdy v levé části je po rozkliknutí select box prázdný a v pravé části se rozbalí s několika možnostmi.

Další věc, která nefunguje správně nebo spíše vůbec je editování příspěvků pomocí Editoru. Funguje pouze editování příspěvků pomocí HTML (což pro některé správce, kteří stránku plní pouze obsahem může být zásadní problém). Editor nezobrazuje text, pouze červěně podtrhává již vytvořený text.

Dále pak správně nefunguje práce s pluginy. Zásadní problém je, že nefunguje aktualizace pluginů. Aktualizace jde spustit, nicméně se neprovede.

Po chvilce pátrání jsem došel k závěru, že problém bude nejspíše způsoben nedostatkem paměti pro PHP na serveru u webhostingu (memory limit). V administraci webhostingu pro danou doménu je momentálně nastaven memory_limit 70 MB.

Jak tedy zjístit, zda-li je problém opravdu v nedostatku paměti, kterou se stránka snaží při spuštění alokovat?

Jednou z možnosti je zapnout debug mode v konfiguračním souboru wp-config.php. Tato možnost neprozradí zda jde opravdu o problém s pamětí, ale prozradí nám, zda se nejedná o nějaký jiný problém v syntaxi webové stránky. Po aktivování se přímo na webové stránce (v případě, že je v ní syntaktická chyba) začne zobrazovat chybová hláška s názvem souboru a číslem řádku, kde se chyba nachází.

V souboru wp-config.php najdeme a upravíme hodnotu z
define('WP_DEBUG', false); na define('WP_DEBUG', true);

Pro zjíštění nedostatku paměti aktivujeme error reporting do souboru. V adresáři /www vytvoříme soubor .user.ini (název souboru začíná tečkou). Do souboru pak vložíme kód, kde v error_log místo example.com doplníte vaši doménu, na které provádíte debug:

log_errors = 1
error_reporting = E_ALL & ~E_DEPRECATED
error_log = /hosting/www/example.com/www/error.log

Počkáme cca 10 minut a pak se pokusíme chybu, kterou se snažíme odchytit nasimulovat. V mém případě stačí spustit v administraci nastavení, nebo editaci příspevků.

Teď se podíváme do souboru error.log, pokud se opravdu jedná o problém s alokací paměti pak uvidíte podobnou hlášku:

[18-May-2018 12:25:48 UTC] PHP Fatal error:  Allowed memory size of 73400320 bytes exhausted (tried to allocate 1048576 bytes) in /hosting/www/example.com/www/wp-includes/wp-db.php on line 1889

Nezapomeňte po debugu soubor .user.ini opět smazat (nebo deaktivovat). Může se stát, že tento soubor naroste a spotřebuje Vám veškeré volné místo.

V mém případě, problém vyřešilo povýšení verze PHP na serveru, kde běží hosting stránek z verze 5 na verzi 7, která umí lépe hospodařit s prostředky paměti.

Dalším řešením, může být odinstalování některých pluginů. V  případě, že ani jedna z možností nepomohla, bude potřeba optimalizovat přímo kód aplikace, která spotřebovává paměť.

Dovoluji si upozornit, že autor článku nenese žádnou zodpovědnost za případné problémy.

„Na světě je zavedeno, že spousta hloupých si hraje na chytré. Z chytrých, kterých je na světě nedostatek, jen ti nejchytřejší si hrají na hloupé.“ Jan Werich