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 vypátrať a vyriešiť konflikt alebo bielu stránku.
Kľúčové pojmy: deaktivovať vs odstrániť, neaktívny kód, kritická chyba, núdzový režim (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
Vypnutie nie je zahodenie
Pri pluginoch môžete plugin deaktivovať alebo odstrániť. Rozdiel:
- Deaktivovať: WordPress plugin už nenačítava. Súbory však zostávajú v priečinku
wp-content/plugins/a často sú stále priamo dostupné cez webový server. Ak je v jednom PHP súbore tohto pluginu bezpečnostná diera, tá tam stále je. Útočníci skenujú podľa známych zraniteľných súborov, nie podľa aktívnych pluginov. - Odstrániť: súbory sa vymažú. Niektoré pluginy pri odstránení upracú aj svoje nastavenia a tabuľky v databáze; iné ich nechajú tak.
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 plugine si položte otázky:
- Na čo slúži? Ak to neviete, zistite to. Často sa ukáže, že plugin bol kedysi nainštalovaný na jednu konkrétnu vec a nikdy nebol odstránený.
- Používa sa ešte? Plugin na slider, hoci nikde žiadny slider nie je, plugin na formuláre, hoci kontaktná stránka používa iný formulár.
- Dá sa bez neho zaobísť? Dokáže to isté 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?
Upratovanie robte najprv v testovacom prostredí (staging) (lekcia 8.3), alebo aspoň vytvorte zálohu, a odstraňujte vždy len jeden plugin naraz, aby ste vedeli, čo spôsobilo problém, ak sa niečo pokazí. Dajte pozor na shortcody: ak odstránite plugin, ktorý zobrazoval [formulier id="2"], tento text potom zostane na stránke doslovne zobrazený.
Keď sa niečo pokazí: kritická chyba
Po aktualizácii, novom plugine alebo prechode na novú verziu PHP zrazu uvidíte:
Na vašej web stránke sa vyskytla kritická chyba.alebo úplne bielu stránku. To znamená, že PHP sa zastavilo s fatálnou chybou ešte predtým, než vznikla stránka (lekcia 1.2). Väčšinou to spôsobí plugin alebo téma, ktoré nie sú kompatibilné s niečím iným: iným pluginom, novou verziou WordPressu alebo 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ôsobili, a špeciálny odkaz;
- pomocou tohto odkazu sa prihlásite do núdzového režimu (recovery mode): administrácia potom funguje, pričom 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é mať adresu administrátora, ktorú skutočne čítate (lekcia 2.2).
Vlastné hľadanie: postup krokov
Nepríde žiadny e-mail, alebo núdzový režim nefunguje? Takto to nájdete sami.
1. Pozrite sa do chybového logu
Chyba sa takmer vždy nachádza v chybovom logu webového servera alebo PHP. V DirectAdmine ho nájdete pri logoch 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/gebruiker/domains/example.com/public_html/wp-content/plugins/oude-slider/slider.php:42Cesta vám povie, kto je vinníkom: v tomto prípade plugin v priečinku oude-slider. Zvyšok riadku hovorí prečo (tu: funkcia, ktorá bola z PHP 8 odstránená, lekcia 8.4).
2. Zapnite debug log (nie zobrazenie na obrazovke)
Ak v chybovom logu nie je nič použiteľné, pridajte do 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 potom zapisuje všetky chyby do wp-content/debug.log, bez toho, aby ich zobrazoval návštevníkom. Nikdy to nenechávajte zapnuté dlhšie, než je potrebné: debug.log sa nachádza v priečinku, ktorý webový server sprístupňuje, a kto pozná adresu, môže ho čítať. Sú v ňom cesty, niekedy používateľské mená a ďalšie informácie, ktoré pomáhajú útočníkovi. Po skončení hľadania to znova vypnite a debug.log odstráňte. Prípadne nechajte WordPress zapisovať logový súbor mimo webového priečinka tak, že pri WP_DEBUG_LOG zadáte cestu (napríklad '/home/gebruiker/logs/wp-debug.log', ak to váš hosting umožňuje). V lekcii 7.4 si overíte, že debug.log nie je verejne prístupný.
3. Vypnutie pluginu bez prístupu do administrácie
Ak sa nedostanete do administrácie, vypnite podozrivý plugin premenovaním jeho priečinka, cez Web FTP alebo SFTP:
wp-content/plugins/oude-slider wordt wp-content/plugins/oude-slider-uitWordPress potom plugin nenájde a vypne ho. Ak neviete, ktorý to je, premenujte celý priečinok plugins na plugins-uit: všetky pluginy sa vypnú. Ak stránka potom funguje, vytvorte nový prázdny priečinok plugins, pluginy vracajte po jednom a po každom skontrolujte, či sa chyba nevráti. Pre tému platí to isté: premenujte priečinok aktívnej témy a WordPress sa vráti k predvolenej téme, ak ešte existuje (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 neodosiela, editor sa načíta len sčasti. Vtedy ide často o konflikt medzi dvoma pluginmi alebo medzi pluginom a témou. Na to je užitočný 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 naďalej vidia bežnú stránku. Potom ich postupne zapínate späť, kým sa problém nevráti.
Pozrite sa aj do konzoly vo svojom prehliadači (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 stránku: zastaranú verziu PHP, pluginy a témy, ktoré nie sú aktívne, chýbajúce PHP rozšírenia, nefunkčné REST API, naplánované úlohy, ktoré meškajú. Na karte Informácie nájdete všetky údaje o vašej inštalácii (verzie, cesty, nastavenia PHP). Túto kartu môžete skopírovať a poslať, keď žiadate o pomoc. Pozrite sa sem vždy po väčšej zmene.
Zhrnutie
- Deaktivácia necháva súbory na mieste; odstráňte pluginy a témy, ktoré nepoužívate.
- Upratujte každý štvrťrok, vždy jeden plugin naraz, so zálohou alebo v testovacom prostredí.
- Pri kritickej chybe pošle WordPress e-mail s odkazom do núdzového režimu.
- Chybový log alebo
debug.loguvádza cestu k vinníkovi; po skončení hľadania debug znova vypnite, pretožedebug.logje inak verejne prístupný. - Bez prístupu do administrácie vypnete plugin premenovaním jeho priečinka; konflikty hľadáte pomocou režimu riešenia problémov.
Kvíz
Úloha
Úloha A5.4: Nie je váš debug log verejne prístupný? Zadajte adresu svojej stránky a kódom, ktorý vám úloha poskytne, dokážte, že ide o vašu vlastnú stránku (TXT záznam alebo malý súbor). Program si vyžiada /wp-content/debug.log: dobré je, ak tento súbor neexistuje alebo je prístup odmietnutý (404 alebo 403). Ak program dostane súbor späť, je to označené červenou. Okrem toho program spočíta, koľko rôznych priečinkov pluginov sa vyskytuje v HTML kóde vašej domovskej stránky (len informatívne).
Ú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. Odstráňte (po zálohe alebo v testovacom prostredí) pluginy, ktoré už nie sú potrebné, vždy jeden naraz, a po každom odstránení skontrolujte, či stránka ešte funguje. Zapíšte, koľko pluginov ste mali a koľko ich zostalo, a poznačte si, či zostali nejaké shortcody, ktoré bolo treba 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 popisujú kroky 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 WordPress)
- 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?
- Debugovanie vo WordPresse (developer.wordpress.org, Angličtina): https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/
