Modul 5 · 5.4
Menej je viac: upratovanie a riešenie konfliktov
Modul 5: Témy a pluginy · Čas čítania: 9 minút
Cieľ lekcie: Po tejto lekcii dokážete upratať pluginy a sami nájsť a vyriešiť konflikt alebo bielu stránku.
Kľúčové pojmy: deaktivovať vs. odstrániť, neaktívny kód, kritická chyba, režim obnovenia (recovery mode), Zdravie webovej stránky, režim riešenia problémov, premenovanie priečinka pluginu, WP_DEBUG, WP_DEBUG_LOG, debug.log, chybový log
Vypnúť neznamená vyhodiť
V časti Pluginy môžete plugin deaktivovať alebo odstrániť. Rozdiel:
- Deaktivovať: WordPress plugin už nenačítava. Súbory však zostávajú v
wp-content/plugins/a často sú stále priamo dostupné cez webový server. Ak je v samostatnom PHP súbore tohto pluginu bezpečnostná diera, stále tam je. Útočníci hľadajú známe zraniteľné súbory, nie aktívne pluginy. - Odstrániť: súbory zmiznú. Niektoré pluginy pri odstránení upracú aj svoje nastavenia a tabuľky v databáze, iné ich tam nechajú.
Ak plugin už nepoužívate, odstráňte ho. Deaktivácia je len na chvíľu (počas hľadania problému). To isté platí pre témy (lekcia 2.4).
Upratovanie: pravidelná kontrola
Raz za štvrťrok (lekcia 9.4) prejdite svoje pluginy. Pri každom pluginu:
- Na čo slúži? Ak už neviete, zistite to. Často sa ukáže, že plugin bol kedysi nainštalovaný kvôli jednej veci a nikdy sa neodstránil.
- Používa sa ešte? Plugin na slider, hoci nikde na stránke slider nie je, alebo plugin na formuláre, hoci vaša kontaktná stránka používa iný formulár.
- Dá sa to bez neho? Zvládne to už WordPress, téma alebo iný plugin (lekcia 5.3)?
- Je ešte udržiavaný? Kedy bol naposledy aktualizovaný, je ešte v adresári pluginov?
Upratujte najprv v testovacom prostredí (staging) (lekcia 8.3) alebo si aspoň vytvorte zálohu, a odstraňujte vždy len jeden plugin naraz, aby ste vedeli, čo sa pokazilo, ak sa niečo pokazí. Dávajte pozor na shortcody: ak odstránite plugin, ktorý poskytoval [formular id="2"], tento text sa potom na vašej stránke zobrazí doslova.
Keď sa niečo pokazí: kritická chyba
Po aktualizácii, inštalácii nového pluginu alebo upgrade PHP zrazu uvidíte:
Na tejto webovej stránke sa vyskytla kritická chyba.alebo úplne bielu stránku. Znamená to, že PHP sa zastavilo s fatálnou chybou skôr, ako vznikla stránka (lekcia 1.2). Väčšinou je príčinou plugin alebo téma, ktorá nie je kompatibilná s niečím iným: s iným pluginom, s novou verziou WordPressu alebo s verziou PHP.
Od WordPressu 5.2 WordPress v takom prípade urobí dve veci:
- pošle e-mail na adresu administrátora s informáciou, ktorý plugin alebo ktorá téma chybu spôsobila, a so špeciálnym odkazom;
- cez tento odkaz sa prihlásite v režime obnovenia (recovery mode): administrácia potom funguje a plugin, ktorý chybu spôsobil, je dočasne vypnutý, takže ho môžete aktualizovať, nahradiť alebo odstrániť.
Preto je taká dôležitá adresa administrátora, ktorú naozaj čítate (lekcia 2.2).
Vlastné hľadanie: postup
Neprišiel e-mail alebo režim obnovenia nefunguje? Takto chybu nájdete sami.
1. Pozrite sa do chybového logu
Chyba je takmer vždy zapísaná v chybovom logu webového servera alebo PHP. V DirectAdmin ho nájdete medzi logmi vašej domény. Hľadáte riadok s PHP Fatal error a časom vášho pokusu:
PHP Fatal error: Uncaught Error: Call to undefined function create_function()
in /home/pouzivatel/domains/example.com/public_html/wp-content/plugins/stary-slider/slider.php:42Cesta prezradí vinníka: tu je to plugin v priečinku stary-slider. Zvyšok riadku hovorí prečo (tu: funkcia, ktorá bola v PHP 8 odstránená, lekcia 8.4).
2. Zapnite debug log (nie zobrazovanie na obrazovke)
Ak v chybovom logu nie je nič použiteľné, pridajte do wp-config.php (nad riadok „stop editing“):
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );WordPress potom zapisuje všetky chyby do wp-content/debug.log bez toho, aby ich ukazoval návštevníkom. Nikdy to nenechávajte zapnuté dlhšie, ako je potrebné: debug.log je v priečinku, ktorý webový server sprístupňuje, a ktokoľvek, kto pozná adresu, si ho môže prečítať. Sú v ňom cesty, niekedy používateľské mená a ďalšie informácie, ktoré útočníkovi pomôžu. Po hľadaní to znova vypnite a debug.log odstráňte. Alebo nechajte WordPress zapisovať log mimo webového priečinka tak, že pri WP_DEBUG_LOG uvediete cestu (napríklad '/home/pouzivatel/logs/wp-debug.log', ak to váš poskytovateľ hostingu umožňuje). V lekcii 7.4 overíte, že debug.log nie je verejne prístupný.
3. Vypnutie pluginu bez administrácie
Ak sa nedostanete do administrácie, vypnite podozrivý plugin premenovaním jeho priečinka, cez Web FTP alebo SFTP:
wp-content/plugins/stary-slider sa premenuje na wp-content/plugins/stary-slider-vypWordPress potom plugin nenájde a vypne ho. Ak neviete, ktorý plugin to je, premenujte celý priečinok plugins na plugins-vyp: vypnú sa všetky pluginy. Ak potom web funguje, vytvorte nový prázdny priečinok plugins, vracajte pluginy späť jeden po druhom a po každom skontrolujte, či sa chyba vráti. Pri téme platí to isté: premenujte priečinok aktívnej témy a WordPress sa vráti k predvolenej téme, ak je ešte nainštalovaná (lekcia 2.4).
4. Konflikty bez fatálnej chyby
Nie každý problém je kritická chyba. Niekedy nefunguje len jedna funkcia: tlačidlo nič nerobí, formulár sa neodošle, editor sa načíta len napoly. Vtedy ide často o konflikt medzi dvoma pluginmi alebo medzi pluginom a témou. Na to je praktický oficiálny plugin Health Check & Troubleshooting: v režime riešenia problémov vypne iba pre vašu reláciu všetky pluginy a prepne na predvolenú tému, zatiaľ čo návštevníci vidia bežný web. Potom pluginy zapínate jeden po druhom, kým sa problém nevráti.
Pozrite sa aj do konzoly svojho prehliadača (F12): chyby JavaScriptu často uvádzajú súbor, a tým aj plugin.
Zdravie webovej stránky
V časti Nástroje > Zdravie webovej stránky WordPress sám kontroluje vašu webovú stránku: zastaranú verziu PHP, neaktívne pluginy a témy, chýbajúce rozšírenia PHP, nefunkčné REST API, oneskorené naplánované úlohy. Na karte Informácie sú všetky údaje o vašej inštalácii (verzie, cesty, nastavenia PHP). Túto kartu môžete skopírovať a priložiť, keď žiadate o pomoc. Po každej väčšej zmene sa sem krátko pozrite.
Zhrnutie
- Deaktivácia ponechá súbory na mieste; pluginy a témy, ktoré nepoužívate, odstráňte.
- Upratujte každý štvrťrok, vždy jeden plugin naraz, so zálohou alebo v testovacom prostredí (staging).
- Pri kritickej chybe WordPress pošle e-mail s odkazom do režimu obnovenia.
- Chybový log alebo
debug.loguvádza cestu k vinníkovi; po hľadaní debug znova vypnite, inak jedebug.logverejne prístupný. - Bez administrácie vypnete plugin premenovaním jeho priečinka; konflikty hľadáte v režime riešenia problémov.
Kvíz
Úloha
Úloha A5.4: Nie je váš debug log verejne prístupný? Zadajte adresu svojej webovej stránky a kódom, ktorý vám úloha poskytne, preukážte, že ide o vašu vlastnú stránku (TXT záznam alebo malý súbor). Program si vyžiada /wp-content/debug.log: v poriadku je, ak neexistuje alebo je prístup odmietnutý (404 alebo 403). Ak program dostane súbor, výsledok je červený. Okrem toho program spočíta, koľko rôznych priečinkov pluginov sa vyskytuje v HTML vašej domovskej stránky (len pre informáciu).
Úloha D5.4: Upratanie zoznamu pluginov. Vytvorte zoznam všetkých svojich pluginov (aktívnych aj neaktívnych): názov, na čo slúži, či je ešte potrebný (áno/nie), alternatíva bez pluginu. Pluginy, ktoré už nepotrebujete, odstráňte (po vytvorení zálohy alebo v testovacom prostredí), vždy jeden naraz, a po každom odstránení skontrolujte, či web stále funguje. Uveďte, koľko pluginov ste mali a koľko zostalo, a poznačte si, či zostali shortcody, ktoré ste museli upratať.
Úloha D5.4: Upratanie zoznamu pluginov
Túto úlohu vykonávate sami, nikto ju nekontroluje. Odškrtnite, čo ste urobili, a označte úlohu ako splnenú.
Počet po je menší alebo rovný počtu pred, a pri každom plugine, ktorý ostáva, je uvedený dôvod. Neaktívne pluginy odstránite: aj vypnutý kód môže obsahovať bezpečnostnú chybu.
Vaše zaškrtnutia a poznámky zostávajú iba v tomto prehliadači, nikam ich neposielame. Po prihlásení si v sekcii Moje kurzy uchovávame iba to, že ste úlohu splnili.
Ďalšie čítanie
Tieto články opisujú postup v paneloch WebOké; v iných paneloch to funguje podobne.
- Návod na DirectAdmin 18.1: Moja webová stránka je biela alebo zobrazuje chybu 500
- Chyba 500 alebo „kritická chyba“ na vašej webovej stránke (aj po aktualizácii WordPressu)
- Návod na DirectAdmin 14.6: Chyby po upgrade PHP a hľadanie záznamu chýb
- Návod na DirectAdmin 17.2: Súhrnné štatistiky a logy: záznam chýb a záznam prístupov
- Ako môžem ladiť PHP bez úpravy php.ini?
- Ladenie vo WordPresse (developer.wordpress.org, v angličtine): https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/
- Výber, hodnotenie a čistenie pluginov vo WordPress
