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 vypátrat a vyřešit konflikt nebo bílou stránku.
Klíčové pojmy: deaktivace vs. odstranění, neaktivní kód, kritická chyba, nouzový režim (recovery mode), Stav webu, režim řešení problémů, přejmenování složky pluginu, WP_DEBUG, WP_DEBUG_LOG, debug.log, chybový protokol
Vypnutí není totéž co vyhození
U Pluginů můžete plugin deaktivovat nebo odstranit. Rozdíl je následující:
- Deaktivace: WordPress plugin už nenačítá. Soubory ale zůstávají ve složce
wp-content/plugins/a často jsou stále přímo dostupné přes webový server. Pokud je v samostatném PHP souboru tohoto pluginu bezpečnostní díra, ta díra tam stále je. Útočníci skenují známé zranitelné soubory, ne aktivní pluginy. - Odstranění: soubory zmizí. Některé pluginy při odstranění uklidí i svá nastavení a tabulky v databázi, jiné je ponechají.
Pokud plugin už nepoužíváte, odstraňte ho. Deaktivace je jen pro 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 si položte otázky:
- K čemu slouží? Pokud to už nevíte, zjistěte si to. Často se ukáže, že plugin byl kdysi nainstalován pro jednu věc a nikdy nebyl odstraněn.
- Používá se ještě? Plugin pro slider, přitom nikde žádný slider není, plugin pro formuláře, přitom kontaktní stránka používá jiný formulář.
- Dá se bez něj obejít? Umí to už WordPress, šablona nebo jiný plugin (lekce 5.3)?
- Je ještě udržovaný? Kdy byl naposledy aktualizován, je ještě ve složce pluginů?
Úklid nejprve proveďte v testovacím prostředí (staging) (lekce 8.3), nebo si minimálně vytvořte zálohu, a odstraňujte jeden plugin po druhém, abyste věděli, co se pokazilo, pokud se něco pokazí. Pozor na shortcody: pokud odstraníte plugin, který vytvářel [formulier id="2"], zůstane tento text poté doslova na Vaší stránce.
Když se něco pokazí: kritická chyba
Po aktualizaci, novém pluginu nebo upgradu PHP se Vám najednou zobrazí:
Na webu došlo k závažné chybě.nebo úplně bílá stránka. To znamená: PHP se zastavilo kvůli fatální chybě dříve, než vznikla stránka (lekce 1.2). Obvykle to způsobí plugin nebo šablona, která nejde dohromady s něčím jiným: jiný plugin, nová verze WordPressu nebo verze PHP.
Od verze WordPress 5.2 udělá WordPress dvě věci:
- pošle e-mail na adresu správce s informací, který plugin nebo šablona způsobily chybu, a speciální odkaz;
- pomocí tohoto odkazu se přihlásíte do nouzového režimu (recovery mode): administrace pak funguje, s dočasně vypnutým pluginem, který chybu způsobil, takže ho můžete aktualizovat, nahradit nebo odstranit.
Proto je tak důležité mít adresu správce, kterou skutečně čtete (lekce 2.2).
Vlastní hledání: jednotlivé kroky
Nepřišel žádný e-mail, nebo nouzový režim nefunguje? Takto to zjistíte sami.
1. Podívejte se do chybového protokolu
Chyba je téměř vždy zaznamenaná v chybovém protokolu (error logu) webového serveru nebo PHP. V DirectAdminu ho najdete u protokolů (logů) Vaší 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/gebruiker/domains/example.com/public_html/wp-content/plugins/oude-slider/slider.php:42Cesta Vám prozradí viníka: zde plugin ve složce oude-slider. Zbytek řádku vysvětluje proč (zde: funkce, která byla odstraněna v PHP 8, lekce 8.4).
2. Zapněte debug log (ne zobrazení na obrazovce)
Pokud v chybovém protokolu nic užitečného není, zapněte v souboru wp-config.php (nad „stop s úpravami“):
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. Nikdy to nenechávejte zapnuté déle, než je nutné: debug.log se nachází ve složce, kterou webový server zpřístupňuje, a kdokoli zná adresu, může ho číst. Jsou v něm cesty, někdy uživatelská jména a další informace, které útočníkovi pomohou. Po dokončení hledání to zase vypněte a debug.log odstraňte. Nebo nechte WordPress zapisovat log mimo webovou složku tím, že u WP_DEBUG_LOG zadáte cestu (například '/home/gebruiker/logs/wp-debug.log', pokud to Váš poskytovatel hostingu umožňuje). V lekci 7.4 zkontrolujete, že debug.log není veřejně dostupný.
3. Vypnutí pluginu bez přístupu do administrace
Pokud se nedostanete do administrace, vypněte podezřelý plugin přejmenováním jeho složky, přes Správce souborů nebo SFTP:
wp-content/plugins/oude-slider wordt wp-content/plugins/oude-slider-uitWordPress pak plugin nenajde a vypne ho. Pokud nevíte, který to je, přejmenujte celou složku plugins na plugins-uit: všechny pluginy se vypnou. Pokud pak web funguje, vytvořte novou prázdnou složku plugins, pluginy vracejte zpět jeden po druhém a po každém pluginu zkontrolujte, zda se chyba znovu objeví. Pro šablonu platí totéž: přejmenujte složku aktivní šablony a WordPress se vrátí k výchozí šabloně, pokud tam ještě je (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 neudělá, formulář se neodešle, editor se načte jen z poloviny. 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 vidí normální web beze změny. Poté je zapínáte jeden po druhém, dokud se problém znovu neobjeví.
Podívejte se také do konzole prohlížeče (F12): chyby JavaScriptu často uvádějí soubor, a tím i plugin.
Stav webu
V sekci Nástroje > Stav webu WordPress sám zkontroluje Váš web: zastaralou verzi PHP, pluginy a šablony, které nejsou aktivní, chybějící PHP rozšíření, nefunkční REST API, zpožděné plánované úlohy. Na záložce Informace jsou všechny údaje o Vaší instalaci (verze, cesty, nastavení PHP). Tuto záložku můžete zkopírovat a poslat, pokud žádáte o pomoc. Podívejte se sem po každé větší změně.
Shrnutí
- Deaktivace ponechá soubory na místě; odstraňte pluginy a šablony, které nepoužíváte.
- Uklízejte každé čtvrtletí, jeden plugin po druhém, se zálohou nebo v testovacím prostředí (staging).
- Při kritické chybě WordPress pošle e-mail s odkazem do nouzového režimu.
- Chybový protokol nebo
debug.loguvádí cestu k viníkovi; po hledání debug opět vypněte, protožedebug.logje jinak veřejně dostupný. - Bez přístupu do administrace vypnete plugin přejmenováním jeho složky; konflikty hledáte pomocí 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 poskytne, dokažte, že jde o Váš vlastní web (TXT záznam nebo malý soubor). Program si vyžádá /wp-content/debug.log: v pořádku je, pokud tento soubor neexistuje nebo je přístup odmítnut (404 nebo 403). Pokud program dostane soubor zpět, je to červeně. Program navíc spočítá, kolik různých složek pluginů se vyskytuje v HTML kódu Vaší domovské stránky (pouze informativně).
Úkol D5.4: Uklidit si seznam pluginů. Sestavte seznam všech svých pluginů (aktivních i neaktivních): název, k čemu slouží, zda je ještě potřeba (ano/ne), alternativa bez pluginu. Odstraňte (po zálohování nebo v testovacím prostředí) pluginy, které už nejsou potřeba, jeden po druhém, a po každém odstranění zkontrolujte, zda web stále funguje. Zapište si, kolik pluginů jste měli a kolik jich zbylo, a poznamenejte si, zda zůstaly nějaké 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.
Doporučené zdroje
Tyto články popisují kroky v panelech WebOké; v jiných panelech fungují obdobně.
- 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 WordPress)
- 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/
