Každý uživatel webu určitě na tuhle nepříjemnost narazil. Internal server error s HTTP kódem 500. Není to nic neobvyklého a ujišťujeme vás, že z 99% není chyba na vašem přijímači.
V tomto článku se podíváme, co tuto chybu nejčastěji způsobuje, jak to je ve WordPressu a jak úspěšně chybu podchytit. Také se dozvíte, jak správně uživatele o problému informovat.
Co znamená chyba 500?
Název “internal server error” trochu napovídá, že za chybu může pouze server. Chyba lávky. Za error často může právě chyba v aplikaci. Není to nic neobvyklého, jsme jenom lidi a špatný kód nebo nepromyšlené situace už k životu programátorů prostě patří. Důležitý je hlavně vědět, jak takové chyby vyřešit.
Quick fix na straně uživatele? Pomůže maximálně refresh stránky a promazání cache. Nic víc kromě kontaktování majitele stránek bohužel nezmůžete.
Nejčastější příčiny chyby 500
Podíváme se na ty nejčastější důvody, které jsme vypozorovali. Bohužel možností je dost a budete muset ověřit více zdrojů. Tak pojďme na to.
Rozdílné verze PHP
Často se stane, že programátor kód (webu, aplikace) přizpůsobí pouze starší verzi PHP (například 5.6) a majitel webu nemá tušení, co to znamená. Takže u svého hostingového providera požádá o navýšení verze PHP například na PHP 7.x, protože slyšel, že je o 30 % rychlejší. Provider požadavku vyhoví, jelikož nezná okolnosti a za chvíli se mu vrátí hovor od naštvaného majitele, že mu rozbil web.
Nezkušený majitel webu, bohužel neví, že nestačí změnit pouze verzi PHP na serveru. Nejdříve se totiž musí “aktualizovat” zdrojový kód, aby byl kompatibilní s novější verzí. Teprve potom bude rychlejší o těch požadovaných 30 %. Zkuste si na to příště vzpomenout, až budete řešit podobnou situaci i vy.
Rozdílná nastavení PHP
PHP má různá rozšíření a nastavení. To opět může způsobit problém, když aplikace nebo web očekává nějaké chování od PHP a nedočká se ho. To způsobí paseku a zobrazí se právě chyba 500.
Stačí do souboru .htaccess přidat zobrazování PHP chyb:
php_flag display_errors on
Pak přidáme kousek kódu do PHP souboru, který byl zodpovědný za zobrazování obsahu.
ini_set('display_errors', 1);
?>
Poté otevřete stejnou stránky, kde by se nyní měly chyby podrobně zobrazit a můžete je začít řešit.
Vždy myslete na to, že hostingový provider není za vaše webové stránky či aplikace přímo zodpovědný a s tímto vám přímo nepomůže. To samozřejmě neznamená, že vás necháme na holičkách. Pomůžeme vás nasměrovat k tomu, kde by mohl být zakopaný pes.
Došlo místo na disku?
Místo na disku samo od sebe nedojde. To se děje pouze v případě, že máte vlastní VPS a v momentě, kdy uživatel ignoruje notifikační e-mail, který na docházející místo na serveru upozorňuje. Ve chvíli, kdy server nemá kam ukládat cookies nebo data v databázi, pak teprve nastává opravdový problém.
U webhostingu vám pouze pošleme notifikační e-mail. Váš web to ale nijak neovlivní, protože “fyzicky” na disku místo stále je. To si hlídáme my. Vám pak chodí pouze automatizované oznámení, že překračujete pronajatý prostor a jednou za měsíc to spolu řešíme.
Doporučujeme na docházející místo dávat pozor a případně se svého providera zeptat, jak danou situaci řeší. Pokud nic nepomůže, rovnou můžete přejít k nám. S tím vám pomůže náš skvělý návod: Jak na migrace.
Chyba v kódu
Ve zdrojovém kódu aplikace nebo webu se odehrává další část alchymie. Chyba 500 může vyskočit např. když:
- chybí středník,
- se volá po neexistující funkci,
- rozšíření PHP není na serveru dostupné,
- zdrojový kód není na používanou PHP verzi aktualizovaný.
Když programátoři pracují na více projektech zároveň, mohou zapomenout, že každý projekt a server je nastaven trochu jinak. Problémy jsou většinou snadno řešitelné, jen je potřeba o nich vědět. Po přečtení celého článku budete na řešení chyb 500 experti. 🙂

Freelo - Nástroj na řízení úkolů a projektů
Přidej se, pozvi svůj tým a klienty, rozděl práci a sleduj, jak se úkoly dají do pohybu.
Špatná oprávnění
Může se stát, že webové soubory či složky mají špatně nastavená oprávnění. Pomocí WinSCP si můžete zkontrolovat, zda veškeré složky a soubory mají správné oprávnění. Nejčastěji 755. Můžete se také připojit na SSH a ve složce webu oprávnění zkontrolovat. Stačí ve složce zadat příkaz “ll” (dvě malá L) a zobrazí se oprávnění daných souborů či složek.
Většina skriptů vyžaduje read/write/execute pro majitele souboru a read/execute pro skupiny a všechny ostatní uživatele (tedy 755). Práva můžete jednoduše změnit příkazem:
chmod 755 (file-name)

Pokud chyba 500 nezmizí, můžete ještě zkusit změnit práva na “chmod 777”, ALE jen pro testovací účely. Pokud chyba zmizí, je potřeba skript upravit, tak aby ho nemohl upravovat každý uživatel.
VPS Centrum
Vyzkoušejte zdarma naši aplikaci pro správu serveru a domén. Budete si připadat jako zkušený administrátor.
Prověřte skripty
Pokud váš web spoléhá na skripty (například Perl nebo CGI), tak existuje řada věcí, které se mohou pokazit. Nejprve zkontrolujte oprávnění souboru, viz výše a pak postupujte podle následujícího seznamu:
- Jsou skripty na správném místě a správně pojmenované? Ověřte, že skripty nebyly přesunuty, odstraněny nebo změnili název.
- Jsou cesty k souborům správné? Mnoho skriptů vyžaduje ke spuštění další soubory a programy. Například, pokud máte skript Perl, začne to cestou k Perlu. Pomocí příkazu “which” můžete najít cestu k Perlu (nebo jinému programovacímu jazyku):which perl”
- Mají skripty oprávnění ke spuštění ve složce, kde jsou umístěné? Možná budete chtít vytvořit jednoduchý testovací skript, kterým to zkontrolujete.
- Ujistěte se, že váš testovací skript je ve stejném jazyce, jako ten, který opravujete a že používá stejnou příponu souboru.
- Byl skript nedávno upraven v textovém editoru, jako je Microsoft Word nebo Wordpad? Programy CGI a další skripty by měly být upraveny pouze pomocí textového editoru, jako je Poznámkový blok nebo BBEdit pro Mac.
- Timeout Error: pokud vaše skripty používají nebo volají externí sítě či zdroje, tak se může stát, že nebudou dostupné. Může to být přetížením sítě nebo je problém na třetí straně. Prověřte tedy, že je všechno v pořádku i u “externích dodavatelů”.
Jak chybu 500 opravit ve WordPressu?
Samozřejmě vám pomohou i všechny triky napsané výše, ale WordPress má svá specifika. Pojďme se na ně podívat.
Špatně nakonfigurovaný .htaccess (nejen pro WP)
Nejčastějším důvodem chyby 500 u WordPressu je způsobena právě souborem .htaccess. To je zkratka, kde webserver zkontroluje, jestli se u webu nachází “prioritní” pravidla. Nejčastěji pravidla přidávají pluginy, aniž byste to tušili.
Rychlá pomůcka, jak zjistit problém je jednoduchá. Stačí soubor z .htaccess přejmenovat na .htaccess_test, pak ho bude webserver ignorovat a zobrazí rovnou stránku a vy uvidíte, jestli to pomohlo. Jestli chyba zmizí, tak je potřeba pátrat, co problém způsobuje. Jak jsem zmínil na začátku: Pravidla přidávají často pluginy. Pokud jste nainstalovali nový, tak doporučujeme prověřit, co a jak vlastně dělá.
Další možnost je vytvořit kompletně nový .htaccess a přidat do něj oficiální řádky z WordPress.org. Pokud tam máte ale různá pravidla z pluginů, tak pravděpodobně pluginy nebudou fungovat správně.
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
PHP limity a nastavení
Všichni víme, že WordPress není zrovna šetrný k serverovým prostředkům. Občas se stane, že skript vyčerpá limit paměti, který mu byl v souboru PHP.ini přidělený. Pokud do něj máte přístup, stačí najít řádek memory_limit a navýšit jej.
Většina českých webhostingů nedovoluje nastavení měnit. Důvod je jednoduchý: snaží se dávat velký počet zákazníků na jeden fyzický server. Naše webhostingové parametry jsou více než příjemné. U nejmenšího tarifu “Lite” 256 MB a u tarifů “Profi” či “WordPress” dokonce dohodou.
Co problém způsobuje?
Může se to stát při instalaci nové WordPress šablony nebo importování demo obsahu, při kterém se PHP opravdu zapotí.
Dalším častým problémem je špatně naprogramovaný plugin nebo divná funkce šablony. Stačí zjistit, jestli plugin nebo šablona prošla aktualizací a co se přesně změnilo. Můžete to vykomunikovat s tvůrci, kteří budou mít zájem problém vyřešit.
Deaktivace WP pluginů
Stále se zobrazuje chyba 500? Pak musíte přejít k radikálnějššímu řešení. Pokud je chyba v pluginu, tak tímto způsobem na to přijdete. Deaktivaci všech pluginů zvládnete i bez přihlášení do administrace. Nejpohodlnější způsob je po připojení na FTP.
Stačí přejmenovat složku /wp-content/plugins na */pluginstest
Pokud chyba 500 zmizela, našli jste jádro problému. Teď jenom zjistit, který plugin má chybu na svědomí.
- Přejmenujte složku na původní znění a začněte měnit pouze názvy jednotlivých pluginů, dokud toho uličníka neobjevíte.
- Podobně to můžete provést i z databáze po připojení na PhpMyAdmin, ale FTP způsob je mnohem přehlednější.
Přeinstalování WP jádra
Pokud se nic z výše uvedeného nepovedlo, tak poslední možnost je přeinstalovat jádro WordPressu. Postup je jednoduchý a rychlý. Stáhněte si úplně novou instalaci WordPressu, nejlépe tu, kterou používáte. Následně stačí .zip soubor rozbalit a zdrojové soubory složek, /wp-admin a /wp-includes překopírovat na hosting či server do stejnojmenných složek.
Tím jste zvládli přepsat jádro WordPressu. Pomohlo to? Super!
Ne? Tak napište na naši podporu, ať vás můžeme aspoň nasměrovat a pomoct vám při hledání řešení.
Jak hlídat WordPress?
Maxiorel.cz napsal skvělý článek o nástroji jménem Tracy, který je přímo pro WordPress. Takže pokud to myslíte vážně, doporučujeme článek přečíst. Jedná se o jednoduchou komponentu oblíbeného frameworku Nette, která pomůže zobrazovat nejrůznější informace o webové aplikaci.
Jak na podchytávání 500 chyb?
Abyste chybu opravili, musíte o ní nejprve vědět. Každý správný vývojář by měl znát, jak “svoje chyby” podchytit, jen tak je následně dokáže ke spokojenosti klienta vyřešit. Proto doporučujeme nastavit si reporting chyb přímo na e-mail.
Kde kontrolovat logy?
Často stačí dva logy. Pro PHP a Apache či jiný webserver, který používáte.
Apache2
Na našich serverech najdete logy ve složce “/var/log/apache2/error.log” nebo “/var/log/apache2/název-webu/error.log” (v konkrétním webu). Pokud si netykáte s příkazovou řádkou, opět doporučuji oblíbený prográmek WinSCP, kterým se na SSH jednoduše přihlásíte a můžete si logy pohodlně prohledat.
Doporučujeme následně v editoru použít klávesovou zkratku CTRL + F a vyhledat “500”
PHP
Logy pro PHP najdete ve složce “/var/log/php7.0-fpm.log” záleží, jakou verzi zrovna web využívá a podle toho budete hledat. Doporučujeme využít postup popsaný výše a podle vypsané chyby se zařídit. Chybu si napsat do googlu a někdo na stackoverflow.com už řešení určitě našel.
Seznamte se s Tracy
Užitečná knihovna jménem Tracy, která by neměla chybět v repertoáru žádného PHP programátora.
Tracy pomůže:
- rychle odhalit a opravit chyby (nejen 500 🙂
- logovat chyby
- jak vypisovat proměnné
- měřit čas a paměťové nároky
- pošle e-mail o chybě
Knihovna Vám určitě zachrání pár vlasů na hlavě. To oceníte v pozdějším věku. 🙂
Jak správně informovat uživatele a přidat vlastní chybovou stránku?
Poslední části dnešního článků se podíváme, jak správně informovat návštěvníka webu nejen o chybě 500.
Je dobré návštěvníka informovat o tom co se zrovna děje. Jak jsme si dnes vysvětlili, tak zrovna chyba 500 není chyba uživatele a měl by o tom vědět. Stačí si připravit hezkou grafickou stránku, jako máme např. my a jen se omluvit za vzniklé potíže s odkazem na domovskou stránku. Upozornit, že chyba není na jeho straně a nějaký kontakt, na kterém může návštěvník na chybu upozornit.
Jsou dva způsoby, jak svojí vlastní chybovou stránku přidat.
.HTACCESS
Nejdříve musíte vlastní chybové stránky nahrát do root složky /www
Následně do .htaccessu přidejte tento řádek:
ErrorDocument 500 /500.html
Pro každý dokument je třeba jeden řádek. Doporučujeme ale nastavení dělat přes hlavní konfigurační soubor.
Konfigurační soubor web serveru
V našem případě se jedná o Apache2 a díky našemu úžasnému VPS Centru změnu provedete velice snadno. Stačí se přihlásit do administrace a v sekci Nastavení najít konfigurační soubor Apache2 a vložit tento řádek. Ve VPS centru tento soubor ale naleznete 2x. První je u nastavení domény. Ten platí pro doménu. Pak je ještě jeden, který je u nastavení serveru. Ten je templatem pro nové domény.
# #####only vas-hosting.cz.cz and www.vas-hosting.cz ####
DocumentRoot /www/hosting/vas-hosting.cz/www
ServerName vas-hosting.cz
ServerAlias www.vas-hosting.cz
ServerAlias www.vas-hosting.cz.xxx00.vas-server.cz vas-hosting.cz.xxx00.vas-server.cz
ErrorDocument 500 /homemade_50x.html
Use vas-hosting.cz
Poté stačí webserver restartovat. To také zvládnete hned z našeho VPS Centra a je hotovo. Nic těžkého. 🙂
Na závěr se může inspirovat se dalšími příklady chybových stránek.
Zdroje:
https://www.ionos.com/community/server-cloud-infrastructure/apache/how-to-fix-http-error-code-500-internal-server-error/
https://www.wplama.cz/co-zpusobuje-internal-server-error/
https://uicookies.com/500-error-page-templates/
https://dribbble.com/shots/1777469-500-Malfunction
https://cdn.sketchrepo.com/images/2x/sketch-error-pages-k5.png
https://cz.pinterest.com/pin/442549100874786819/?lp=true