Modul 5 · 5.4
Méně je více: úklid a řešení konfliktů
Modul 5: Šablony a pluginy · Doba čtení: 9 minut
Cíl lekce: Po této lekci dokážete uklidit pluginy a sami najít a vyřešit konflikt nebo bílou stránku.
Klíčové pojmy: deaktivace vs. odstranění, neaktivní kód, kritická chyba, režim obnovení (recovery mode), Stav webu, režim řešení problémů, přejmenování složky pluginu, WP_DEBUG, WP_DEBUG_LOG, debug.log, chybový log
Vypnout neznamená vyhodit
V části Pluginy můžete plugin deaktivovat nebo odstranit. Rozdíl:
- Deaktivovat: WordPress plugin už nenačítá. Soubory ale zůstávají v
wp-content/plugins/a často je lze stále přímo vyvolat přes webový server. Pokud je v samostatném PHP souboru tohoto pluginu bezpečnostní díra, pořád tam je. Útočníci hledají známé zranitelné soubory, ne aktivní pluginy. - Odstranit: soubory zmizí. Některé pluginy při odstranění uklidí i svá nastavení a tabulky v databázi, jiné je tam nechají.
Pokud plugin už nepoužíváte, odstraňte ho. Deaktivace je jen na chvíli (při hledání problému). Totéž platí pro šablony (lekce 2.4).
Úklid: pravidelná kontrola
Jednou za čtvrtletí (lekce 9.4) projděte své pluginy. U každého pluginu:
- K čemu slouží? Pokud už to nevíte, zjistěte to. Často se ukáže, že byl plugin kdysi nainstalován kvůli jediné věci a nikdy nebyl odebrán.
- Používá se ještě? Plugin pro slider, přestože nikde žádný slider není, nebo plugin pro formuláře, přestože Vaše kontaktní stránka používá jiný formulář.
- Obejdete se bez něj? Umí to už WordPress, šablona nebo jiný plugin (lekce 5.3)?
- Je ještě udržovaný? Kdy byl naposledy aktualizován, je stále v adresáři pluginů?
Úklid proveďte nejdříve v testovacím prostředí (staging) (lekce 8.3), nebo si aspoň vytvořte zálohu, a odstraňujte vždy jen jeden plugin, abyste věděli, co způsobilo problém, pokud se něco pokazí. Dávejte pozor na shortcody: pokud odstraníte plugin, který poskytoval [formular id="2"], zobrazí se tento text potom doslova na Vaší stránce.
Když se něco pokazí: kritická chyba
Po aktualizaci, instalaci nového pluginu nebo upgradu PHP najednou uvidíte:
Na webu se vyskytla kritická chyba.nebo úplně bílou stránku. To znamená, že PHP skončilo s fatální chybou dřív, než vznikla stránka (lekce 1.2). Většinou je příčinou plugin nebo šablona, která nespolupracuje s něčím jiným: s jiným pluginem, s novou verzí WordPressu nebo s verzí PHP.
Od verze WordPress 5.2 udělá WordPress v takové situaci dvě věci:
- pošle e-mail na adresu administrátora s informací, který plugin nebo která šablona chybu způsobila, a se speciálním odkazem;
- pomocí tohoto odkazu se přihlásíte v režimu obnovení (recovery mode): administrace pak funguje a plugin, který chybu způsobil, je dočasně vypnutý, takže ho můžete aktualizovat, nahradit nebo odstranit.
Proto je tak důležité mít administrátorskou adresu, kterou opravdu čtete (lekce 2.2).
Hledání na vlastní pěst: postup
Nepřišel e-mail, nebo nefunguje režim obnovení? Takto příčinu najdete sami.
1. Podívejte se do chybového logu
Chyba je téměř vždy zapsaná v chybovém logu webového serveru nebo PHP. V DirectAdminu ho najdete u logů své domény. Hledáte řádek s PHP Fatal error a časem Vašeho pokusu:
PHP Fatal error: Uncaught Error: Call to undefined function create_function()
in /home/uzivatel/domains/example.com/public_html/wp-content/plugins/stary-slider/slider.php:42Cesta Vám prozradí viníka: zde plugin ve složce stary-slider. Zbytek řádku říká proč (zde: funkce, která byla v PHP 8 odstraněna, lekce 8.4).
2. Zapněte debug log (ne zobrazování na obrazovce)
Pokud v chybovém logu nic užitečného není, vložte do wp-config.php (nad řádek „To je vše, dále needitujte!“, v anglické verzi „stop editing“):
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );WordPress pak zapisuje všechny chyby do wp-content/debug.log, aniž by je zobrazoval návštěvníkům. Nenechávejte to zapnuté déle, než je nutné: debug.log leží ve složce, kterou webový server zpřístupňuje, a kdo zná adresu, může ho přečíst. Jsou v něm cesty, někdy uživatelská jména a další informace, které útočníkovi pomohou. Po hledání ho opět vypněte a debug.log smažte. Nebo nechte WordPress zapisovat log mimo webový adresář tím, že u WP_DEBUG_LOG zadáte cestu (například '/home/uzivatel/logs/wp-debug.log', pokud to Váš hostingový poskytovatel umožňuje). V lekci 7.4 zkontrolujete, že debug.log není veřejně dostupný.
3. Vypnutí pluginu bez administrace
Pokud se nedostanete do administrace, vypněte podezřelý plugin tím, že jeho složku přejmenujete, přes Správce souborů nebo SFTP:
wp-content/plugins/stary-slider přejmenovat na wp-content/plugins/stary-slider-vypWordPress pak plugin nenajde a vypne ho. Pokud nevíte, o který jde, přejmenujte celou složku plugins na plugins-vyp: vypnou se všechny pluginy. Pokud web pak funguje, vytvořte novou prázdnou složku plugins, vracejte pluginy zpět jeden po druhém a po každém pluginu zkontrolujte, zda se chyba vrátila. Pro šablonu platí totéž: přejmenujte složku aktivní šablony a WordPress se vrátí k výchozí šabloně, pokud je ještě nainstalovaná (lekce 2.4).
4. Konflikty bez fatální chyby
Ne každý problém je kritická chyba. Někdy nefunguje jen jedna funkce: tlačítko nic nedělá, formulář se neodešle, editor se načte jen napůl. Pak jde často o konflikt mezi dvěma pluginy nebo mezi pluginem a šablonou. K tomu se hodí oficiální plugin Health Check & Troubleshooting: v režimu řešení problémů vypne pouze pro Vaši relaci všechny pluginy a přepne na výchozí šablonu, zatímco návštěvníci normálně vidí běžný web. Potom je zapínáte jeden po druhém, dokud se problém nevrátí.
Podívejte se také do konzole svého prohlížeče (F12): chyby JavaScriptu často uvádějí soubor, a tím i plugin.
Stav webu
V části Nástroje > Stav webu WordPress sám kontroluje Váš web: zastaralou verzi PHP, neaktivní pluginy a šablony, chybějící rozšíření PHP, nefunkční REST API nebo naplánované úlohy, které se zpožďují. Na kartě Informace najdete všechny údaje o své instalaci (verze, cesty, nastavení PHP). Tuto kartu můžete zkopírovat a přiložit, když žádáte o pomoc. Po každé větší změně se sem krátce podívejte.
Shrnutí
- Deaktivace soubory ponechá; pluginy a šablony, které nepoužíváte, odstraňte.
- Uklízejte každé čtvrtletí, vždy jeden plugin, se zálohou nebo v testovacím prostředí (staging).
- Při kritické chybě pošle WordPress e-mail s odkazem do režimu obnovení.
- Chybový log nebo
debug.loguvádí cestu k viníkovi; po hledání debug opět vypněte, jinak jedebug.logveřejně dostupný. - Bez administrace vypnete plugin přejmenováním jeho složky; konflikty hledáte v režimu řešení problémů.
Kvíz
Úkol
Úkol A5.4: Není Váš debug log veřejně dostupný? Zadejte adresu svého webu a pomocí kódu, který Vám úkol vygeneruje, prokažte, že jde o Váš vlastní web (záznam TXT nebo malý soubor). Program si vyžádá /wp-content/debug.log: v pořádku je, když neexistuje nebo je přístup odepřen (404 nebo 403). Pokud program dostane zpět soubor, je výsledek červený. Kromě toho program spočítá, kolik různých složek pluginů se vyskytuje v HTML Vaší domovské stránky (pouze pro informaci).
Úkol D5.4: Uklidit si seznam pluginů. Sepište si všechny své pluginy (aktivní i neaktivní): název, k čemu slouží, zda jsou ještě potřeba (ano/ne), alternativa bez pluginu. Odstraňte (po vytvoření zálohy nebo v testovacím prostředí) pluginy, které už nepotřebujete, vždy jeden, a po každém odstranění zkontrolujte, zda web stále funguje. Vyplňte, kolik pluginů jste měli a kolik jich zbylo, a poznamenejte si, zda zůstaly shortcody, které jste museli uklidit.
Úkol D5.4: Uklidit si seznam pluginů
Tento úkol provádíte sami; nikdo ho nekontroluje. Odškrtněte, co jste udělali, a označte úkol jako splněný.
Počet po úklidu je menší nebo stejný a u každého pluginu, který zůstává, je uveden důvod. Neaktivní pluginy odstraňte: i vypnutý kód může obsahovat bezpečnostní díru.
Vaše zaškrtnutí a poznámky zůstávají pouze v tomto prohlížeči; nikam je neposíláme. Pokud jste přihlášeni, ukládáme v sekci Moje kurzy pouze to, že jste úkol splnili.
Další čtení
Tyto články popisují postup v panelech WebOké; v jiných panelech to funguje podobně.
- Příručka k DirectAdmin 18.1: Můj web je bílý nebo zobrazuje chybu 500
- Chyba 500 nebo „kritická chyba“ na Vašem webu (i po aktualizaci WordPressu)
- Příručka k DirectAdmin 14.6: Chyby po upgradu PHP a nalezení logu chyb
- Příručka k DirectAdmin 17.2: Souhrn webu a logy: log chyb a log přístupů
- Jak mohu ladit PHP bez úpravy php.ini?
- Ladění ve WordPressu (developer.wordpress.org, anglicky): https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/
- Výběr, hodnocení a úklid pluginů pro WordPress
