WordPress | 8. Nefunkční web

Při aktualizaci, změnách nastavení nebo i vnějším zásahem může dojít k poškození webu, namísto vašeho obsahu se pak v prohlížeči nezobrazí nic nebo chybová hláška. Jak chybu poznat a jak web rychle uzdravit?

Před provedením jakéhokoli kroku si web důkladně zálohujte!

#1 | Prázdná stránka

Pokud místo vašeho webu vidíte jen prázdnou bílou stránku, doporučujeme v konfiguračním souboru wp-config.php na FTP aktivovat režim ladění. Pak by se měly zobrazit konkrétnější chyby s příčinou problému. Pro dohledání dalších chyb pokračujte ve čtení tohoto článku. Pro hlubší pochopení bílé smrti ve WordPressu a její další možná řešení jsme pro Vás připravili návod Bílá smrt ve WordPressu.

výchozí hodnota WP_DEBUG je false, pro zapnutí režimu ladění ji změňte na true

Po dokončení úprav nezapomeňte režim ladění opět vypnout změnou hodnoty na false.

define( 'WP_DEBUG', false ); 

#2 | Během připojování k databázovému serveru ….

… nebo alternativa ve vámi používaném jazyce. WordPress se nemůže připojit k databázi. Nejčastěji je to po změně databázových údajů bez jejich aktualizace v konfiguračním souboru.

takto WordPress hlásí, že se nemůže připojit k databázi

Údaje pro připojení k databázi se uchovávají na FTP v souboru wp-config.php. Pokud změníte heslo k databázi, je nutné jej změnit i zde. Údaje vypadají přibližně takto:

přístupové údaje k databázi, ohraničené apostrofy

Pozor na přebytečné mezery a překlepy.

v hesle je možné mít i mezeru, ale často se tam nečekaně vloudí – tato hesla nejsou totéž

Zkontrolujte, zda v konfiguračním souboru odpovídá nastavený prefix databáze s tím, který je u každé tabulky.

prefix databáze umožňuje mít více instalací WordPressu v jedné databázi, stačí je spárovat

#3 | Chyba pluginu nebo šablony

Chybová hláška může být různá (ukážeme si jednu z obvyklých) a většinou obsahuje i cestu k souboru. Pokud v textu chyby uvidíte /wp-content/plugins/ nebo /wp-content/themes/, jde velmi pravděpodobně havarovaný plugin či šablonu. Hned další část chyby vám prozradí, který plugin nebo šablona to je.

chybová hláška může být různá, důležité je zorientovat se a najít, kde poškození vzniklo

Pokud se dostanete do administrace /wp-admin, stačí plugin / šablonu vypnout. Administrace ale nemusí při havárii zůstat funkční, v tom případě se připojte na FTP a složku pluginu / šablony přejmenujte, třeba jako na screenshotu. Pokud nevíte přesně, který plugin zlobí, nebo je jich více, lze je vyřadit všechny najednou přejmenováním celé složky /wp-content/plugins

přejmenování adresáře dočasně vyřadí problémový plugin / šablonu z provozu

V tuto chvíli už pravděpodobně bude možné se přihlásit do administrace WordPressu a opravit chybu nebo znovu nainstalovat poškozený plugin.

#4 | Poškozené základní soubory WordPressu

K tomu dochází nejčastěji při nepovedené aktualizaci, napadení webu nebo neodborném zásahu. V chybové hlášce hledejte text /wp-includes/. To je složka na FTP, kde jsou základní soubory WordPressu, web bez nich nebude správně fungovat a nemělo by s nimi být neodborně manipulováno.

v chybové hlášce hledejte zmínku o adresáři wp-includes, který uchovává základní soubory WP

Před dalšími opravami doporučujeme nastavit základní šablonu, případně vypnout pluginy. Poté znovu načtěte web bez cache (Ctrl+Shift+R).

Možným řešením této poruchy je spustit aktualizaci (pokud je dostupná administrace WordPress) nebo stáhnout a rozbalit balíček se soubory WordPress, všechny je nahrát na FTP – nahradit všechny původní soubory. Pokud víte verzi WP (zjistíte v souboru /wp-includes/version.php), stáhněte si přímo tu, pokud nevíte, stáhněte nejnovější – zároveň tím provedete aktualizaci. FTP klient by vás měl upozornit na nahrazení souborů, to odsouhlaste. Uživatelských dat se to netýká, nahrazují se tím jen kritické soubory WordPressu. Přesto důsledně doporučujeme mít funkční zálohu.

#5 | Nekompatibilita verze PHP

Nekompatibilita webu s verzí PHP se může projevovat mnoha způsoby. Obvykle to může být hlášení o nedefinované funkci, kdy WordPress požaduje funkci PHP, která v používané verzi ještě nebo už není:

Fatal error: Call to undefined function nazevfunkce()

Může jít o chybějící rozhraní mysql (od PHP 7.0 už mysql není), nebo třeba tato hláška:

Warning: “continue” targeting switch is equivalent to “break”. Did you mean to use “continue 2”?

Zkuste změnit verzi PHP, ideálně na starší.

#6 | Přesměrování webu, napadený web

Velmi častý jev při napadení webu. Útočníkovi stačí změnit URL WordPressu a ten pak při načtení provede automatické přesměrování na škodlivou stránku. Často takových přesměrování proběhne mnoho v řadě, a skončíte na webu s vyskakovacími okny, který může nabízet nějakou soutěž a požadovat osobní informace. Nikdy tam nic nezadávejte a urychleně web opusťte.

Mohou to být očividně nepříliš užitečné domény typu http://app1111.nonameptr00.live/45687421642/ nebo naopak lépe vypadající https://reflex.worldtraffic.com/r.php – kromě špatné češtiny a škodlivého obsahu tam nic nečeká.

méně zkušení uživatelé takovému webu bohužel mohou důvěřovat

V této fázi už velmi pravděpodobně nebudete mít přístup do /wp-admin (pokud ano, jen ověřte, že je v Nastavení >> Obecné nastavena vaše doména). Proveďte kontrolu nastavení URL webu, v PHPMyAdmin v tabulce #_options. Na řádcích siteurl a home musí být uvedena jen vaše adresa webu, cokoli jiného je nesmysl.

URL webu zkontrolujte na obou řádcích, nemusejí být vždy řazené takto na začátku

Pokud po opravě stále přetrvává přesměrování, zkuste vyřadit všechny pluginy. Tj. jako v bodu #3 tohoto návodu, ale přejmenujte celou složku /wp-content/plugins. Pluginy pak doporučujeme raději nainstalovat znovu a vyhnout se neověřeným pluginům s malým množství recenzí.

#7 | Warning: include_once(): open_basedir restriction in effect

Zejména při přesunu webu mezi servery můžete narazit na podobnou chybovou hlášku.

Warning: include_once(): open_basedir restriction in effect. File(/data/web/virtuals/123456/virtual/www/domains/svatky.cz/wp-content/plugins/wp-super-cache/wp-cache-phase1.php) is not within the allowed path(s): (/data/web/virtuals/176164/virtual) in /data/web/virtuals/176164/virtual/www/domains/svatky.cz/wp-content/advanced-cache.php on line 22

Některé pluginy používají v konfiguračního souboru webu celou cestu, včetně ID webhostingu. Při změně webhostingu se pak snaží přistupovat do souborů na původním webhostingu, to ale není povolené. Nejprve je potřeba identifikovat, který plugin vykazuje chybu. Typicky to bývají cachovací pluginy, ale může se to stát i kdekoli jinde. Chybová hláška by měla příčinu napovídat.

přečtením chyby poznáte, že příčinou je v tomto případě cachovací plugin

Zkuste některý z úryvků chyby najít v konfiguračním souboru WordPressu, obvykle je to soubor wp-config.php. Do jiných souborů se obvykle příliš nezasahuje. Pokud ve wp-config.php žádnou stopu nenajdete, zkuste problémový plugin restartovat nebo přeinstalovat.

plugin si uložil celou cestu k adresáři, po změně webhostingu už cesta neplatí

Pokud se podařilo identifikovat zdroj problému a najít i konkrétní řádek s neplatným údajem, oprava je už velmi jednoduchá a napovídá ji přímo chybová hláška.

zelená cesta je správně, červená je špatně, když se neshodují = chyba open_basedir

Přepište cestu k adresáři na správnou a uložte. Stránku aktualizujte pomocí Shift + F5, tím se zbavíte cache a oprava by se měla projevit.

nezapomeňte upravený soubor nahrát na FTP a web pak aktualizujte pomocí Shift + F5

#8 | Call to undefined function mysql_connect()

Měnili jste verzi PHP? Nebo provozujete starší software? Pokud na svém webu uvidíte chybu Fatal error: Uncaught Error: Call to undefined function mysql_connect(), zřejmě se váš web pokouší pro spojení s databází použít zastaralý PHP modul mysql a máte nastavenou verzi PHP 7.0 a vyšší. PHP ale již od verze 7 mysql nepodporuje, a je nutné pro spojování s databází využít moduly mysqli nebo PDO. Pokud tuto volbu nenaleznete v nastavení vašeho webu, může být nutné zasáhnout do kódu, pak prosím situaci konzultujte se svým tvůrcem nebo správcem webu. Mezitím (nebo pokud nelze upravit kód webu) si snižte verzi PHP na 5.6 – tím si web za cenu nižší bezpečnosti a výkonu zprovozníte. Rozhodně doporučujeme zastaralý modul mysql již nepoužívat a co nejdříve aktualizovat na novější verzi.

je nutné přepnout modul pro spojení DB na mysqli / PDO nebo snížit verzi PHP na 5.6

#9 | Problém s obrázky, open_basedir restriction in effect

open_basedir je na sdíleném webhostingu nutností. Chrání vás před ostatními uživateli, nikdo tak nemůže neoprávněně prohlížet vaše data. Každý webhosting má svůj adresář a jen do toho může přistupovat.

do zeleně značeného adresáře má váš webhosting přístup, do červeně značeného ne
číselný údaj (např. 123456) je ID vašeho webhostingu

Pokud přesouváte web mezi webhostingy nebo i z úplně jiného serveru, může být potřeba upravit cestu k některým souborům – v takovém případě uvidíte chybu Warning: file_exists(): open basedir restriction in effect. Web se totiž snaží načítat soubory stále z původního webhostingu, to ale není povolené. V případě WordPress jde typicky o adresář /wp-content/uploads a úprava je naštěstí jednoduchá. Probíhá v databázi, tedy třeba v PHPMyAdmin.

jde jen o úpravu jedné hodnoty v databázi
  1. Přihlaste se v PHPMyAdmin uživatelským jménem a heslem databázového uživatele. Najdete je v souboru wp-config.php.
  2. V levém menu zvolte databázi, které se úprava týká.
  3. Ze seznamu tabulek v levém menu vyberte tabulku #_options. Namísto znaku # budete mít prefix, stejný pro všechny tabulky. Pokud máte v databázi prefixů více, zjistěte si nejprve správný prefix ve wp-config.php (třeba $table_prefix = ‚wp_‘).
  4. Na řádku 56 upload_path si rozklikněte obsah třetího sloupce (option_value), pro jistotu si celý text zálohujte třeba do textového souboru, a pak jej smažte. Nechte tedy tuto hodnotu v databázi prázdnou.
  5. Nyní by vám měl začít fungovat web. Pokud ne, nebo uvidíte jiné chyby, bude potřeba vrátit zálohovanou hodnotu a upravit ji přesně podle údajů vašeho webhostingu a webu. Nejlépe se tedy poraďte se svým správcem webu.

Výsledek:

hodnota upload_path zůstane prázdná, tím se použije obvyklý adresář WordPressu

#10 | Chyba s /wp-content/advanced-cache.php

Na podobnou chybu narazíte při poruše nebo po odstavení cachovacího pluginu. Typicky to je problém WP Super Cache, ale může se týkat i jiných cachovacích pluginů.

ve WordPressu zůstal po smazání cachovacího pluginu soubor /wp-content/advanced-cache.php, je třeba se ho zbavit

Řešením je vymazat soubor /wp-content/advanced-cache.php. Klidně si jej předem zálohujte, ale není tam nic důležitého. Cachovací plugin si později soubor může vytvořit znovu. Doporučujeme také cachovací plugin kompletně odstranit a provést novou instalaci, jen tak bude plně funkční.

#11 | Dočasný adresář neexistuje / Missing a temporary folder.

Pokud na webhostingu chybí adresář /tmp, který WordPress a PHP obecně používá jako úložiště k nahrávání souborů přes webový prohlížeč, nepůjde vám do administrace WordPressu nahrát nový obrázek. Chybová hláška bude Dočasný adresář neexistuje nebo v anglické variantě Missing a temporary folder.

Řešení je snadné, na FTP v root adresáři ( / ) vytvořte prázdnou složku s názvem tmp . V některých FTP klientech může být název složky zobrazen jako /tmp – to by mělo být také v pořádku. Složka by měla být na stejné úrovni, jako složky /www, /session a /logs. Některé FTP účty mohou vést do některé z podsložek, ujistěte se tedy, že používáte FTP účet s přístupem do / adresáře. Jistotou je hlavní FTP účet, který vám byl vytvořen při zřízení webhostingu. Pokud potřebujete dohledat údaje k FTP, hledejte e-mail s předmětem Webhosting zřízen nebo si údaje nastavte v zákaznické administraci.

Pro vyřešení chyby Dočasný adresář neexistuje stačí vytvořit složku /tmp na FTP webhostingu.