Napaka 500 po posodobitvi vtičnika: varen izklop vtičnika

WordPress Branje: 4 min

Če spletno mesto po posodobitvi vtičnika vrne napako 500 ali se prikaže sporočilo „Na tej spletni strani je prišlo do kritične napake.”, nova koda vtičnika skoraj vedno ni združljiva z nečim: z različico PHP, z drugim vtičnikom ali z različico WordPressa. Posodobitev zapiše nove datoteke, vtičnik ostane aktiven, WordPress pa ga poskuša naložiti ob vsaki zahtevi, zato se lahko ustavi tudi skrbniški vmesnik.

Vrstni red: najprej spletno mesto vrni v delovanje, nato ugotovi, kaj je bilo narobe. O drugih vzrokih napake 500 (.htaccess, dovoljenja, nastavitve PHP) piše naš blogovski zapis. Korake smo preizkusili z namerno pokvarjenim vtičnikom na testnem spletnem mestu gostovanja cPanel.

1. Poglej dnevnik napak

Na strežnikih cPanel aWh PHP napake zapisuje v datoteko logs/php.error.log domačega imenika, v korenu spletnega mesta pa lahko nastane tudi datoteka error_log. Vrstica usodne napake navede datoteko, s tem pa tudi vtičnik:

PHP Fatal error:  Uncaught Error: Call to undefined function kb_nem_letezo_fuggveny() in /home/felhasznalonev/public_html/wp-content/plugins/pelda-bovitmeny/pelda-bovitmeny.php:6

V Terminalu ali prek SSH:

grep -i "fatal" ~/logs/php.error.log | tail -n 5
ls -lt ~/public_html/wp-content/plugins/ | head -5

Drugi ukaz izpiše nazadnje spremenjene mape vtičnikov: sveže posodobljeni vtičnik je prvi osumljenec. Brez SSH dnevnik odpreš v vmesniku Upravitelj datotek v cPanelu (mapa logs je v domačem imeniku).

WordPress ob „kritični napaki” pošlje tudi e-sporočilo na skrbniški naslov, s povezavo za obnovitev, s katero se lahko v skrbniški vmesnik prijaviš brez napačnega vtičnika. O tem piše članek o belem zaslonu.

2. Izklopi vtičnik

Z WP-CLI (priporočeno)

WP-CLI izvede WordPressov lasten postopek izklopa, tako kot skrbniški vmesnik. Če se napaka pojavi že ob nalaganju vtičnika, se zatakne tudi WP-CLI (wp plugin list izpiše isto usodno napako). Takrat napačni vtičnik s stikalom --skip-plugins izpusti iz nalaganja:

cd ~/public_html
wp plugin deactivate pelda-bovitmeny --skip-plugins=pelda-bovitmeny

Odgovor: Plugin 'pelda-bovitmeny' deactivated. Ime vtičnika (ime njegove mape) prebereš iz poti v sporočilu o napaki. Pri namestitvi z več spletnimi mesti, pri vtičniku, vklopljenem na ravni omrežja, dodaj stikalo --network.

WP-CLI je na voljo v paketih z dostopom SSH (cP Premium, cP Pro, cP Pro 100); osnove opisuje članek o uporabi WP-CLI.

S preimenovanjem mape (brez SSH)

V vmesniku Upravitelj datotek v cPanelu odpri mapo public_html/wp-content/plugins in preimenuj mapo vtičnika, na primer v pelda-bovitmeny.hibas. WordPress kode ne najde, zato je ne naloži, spletno mesto pa je bilo v preizkusu takoj spet dosegljivo.

To je hitrejša, a grobejša pot: vtičnik je po WordPressu še vedno aktiven (v nastavitvi active_plugins ostane manjkajoča datoteka), njegovi lastni koraki izklopa pa se ne izvedejo, zato njegova načrtovana opravila in nastavitve ostanejo na mestu. Takoj ko spletno mesto deluje, v skrbniškem vmesniku odpri stran Vtičniki: WordPress takrat sporoči, da vtičnik manjka, in ga izklopi.

Če tudi po izklopu ostanejo napake

Poglej, ali je vtičniku ostalo načrtovano opravilo, ker lahko ta v ozadju še naprej povzroča napako:

wp cron event list | grep -i pelda

3. Vrni se na delujočo različico

  • Točka obnovitve WP Toolkit: če je posodobitev opravil WP Toolkit in je bila vklopljena točka obnovitve, se lahko na kartici spletnega mesta z enim klikom vrneš nazaj.
  • Dnevna varnostna kopija: v vmesniku JetBackup lahko obnoviš tudi le mapo vtičnika z dneva pred posodobitvijo (obnovitev iz varnostne kopije).
  • Prejšnja različica z WordPress.org: na strani vtičnika na wordpress.org s klikom na povezavo Advanced View na dnu strani preneseš starejše različice. Z WP-CLI v enem koraku:
wp plugin install pelda-bovitmeny --version=1.4.2 --force --skip-plugins=pelda-bovitmeny
wp plugin activate pelda-bovitmeny

4. Preberi napako, preden ga znova vklopiš

Najpogostejši primeri:

  • Call to undefined function str_contains() ali druga novejša funkcija PHP: vtičnik zahteva novejši PHP od tistega, ki ga uporablja spletno mesto. Preidi na novejšo različico PHP v vmesniku Select PHP Version (nastavitev različice PHP) ali ostani pri stari različici vtičnika. Po menjavi PHP preveri celotno spletno mesto, ne le tega vtičnika.
  • Class "…" not found za enega od razredov WordPressa: različica WordPressa je za vtičnik prestara. Posodobi WordPress.
  • Cannot redeclare function …(): dva vtičnika uporabljata isto ime funkcije. Enega odstrani ali sporoči razvijalcu.
  • Allowed memory size of … bytes exhausted: nova različica zahteva več pomnilnika. O tem piše članek o omejitvi pomnilnika.

Če v dnevniku ni ničesar, vklopi beleženje napak WordPressa (način za odpravljanje napak) in ponovi napako.

5. Naslednjič z manjšim tveganjem

  • Zapiši si vtičnik in različico (na primer „pelda-bovitmeny 1.5.0 zahteva PHP 8.1”), da ti naslednjič tega ni treba znova ugotavljati.
  • Pomembne vtičnike najprej posodobi na testni kopiji (staging).
  • V WP Toolkit vklopi točko obnovitve ali funkcijo pametne posodobitve, ki posodobitev najprej preizkusi na kopiji. Primerjavo načinov posodabljanja vsebuje ločen članek.

Če je spletno mesto napako 500 začelo vračati samo od sebe, brez posodobitve vtičnika, pomagata članek o splošni napaki 500 in članek o omejitvah virov CloudLinux. Če se zatakne, piši naši podpori.

Nazaj: WordPress – članki (45)