Backend/Server

Internal Server Error (500)

Co je Internal Server Error 500?

Internal Server Error 500 je HTTP stavový kód signalizující, že na serveru došlo k neočekávané chybě, která zabránila dokončení požadavku. Jde o obecnou serverovou chybu – na rozdíl od konkrétnějších chybových kódů (jako 404 Not Found nebo 403 Forbidden) nedává chyba 500 návštěvníkům ani správci webu přesnou informaci o tom, co se pokazilo. Server prostě narazil na problém, který nedokázal vyřešit.

Pro návštěvníky webu je chyba 500 frustrující – vidí jen nefunkční stránku s obecnou chybovou hláškou. Pro majitele webu je to signál, že je třeba okamžitě zjistit příčinu a problém vyřešit. Chyba 500 může být způsobena vadným kódem v PHP skriptu, chybnou konfigurací serveru, problémem s databází nebo přetížením zdrojů. Na rozdíl od chyb řady 4xx (které indikují problém na straně klienta), chyba 500 jasně říká: problém je na straně serveru.

V praxi se Internal Server Error může projevit různě – od úplně prázdné stránky přes obecnou hlášku "500 Internal Server Error" až po vlastní error stránku nastavenou na hostingu. Důležité je chápat, že chyba 500 není specifická pro jeden typ webu – může se objevit na WordPressu, e-shopu, vlastní aplikaci i statickém webu. Klíčové je rychlé zjištění příčiny a oprava, protože každá minuta výpadku znamená ztracené návštěvníky a potenciálně i pokles v pozicích na vyhledávačích.

Nejčastější příčiny chyby 500

  • Chybný .htaccess soubor

  • Soubor .htaccess řídí konfiguraci serveru na úrovni adresáře. Jediný překlep v direktivě, chybná syntaxe nebo konfliktní pravidlo může způsobit chybu 500. Nejčastěji jde o chybně nastavená URL přesměrování nebo mod_rewrite pravidla. Rychlý test: přejmenujte .htaccess na .htaccess_old a zkuste web znovu načíst. Pokud chyba zmizí, problém je v .htaccess souboru.

  • Chyba v PHP kódu

  • Syntaktická chyba, fatální error nebo zavolání neexistující funkce v PHP skriptu okamžitě vyvolá chybu 500. Může jít o chybějící středník, špatně uzavřenou závorku, zavolání funkce z neaktivního pluginu nebo nekompatibilitu s verzí PHP. Error log obvykle ukáže přesný řádek, kde k chybě došlo.

  • Překročení limitů serveru

  • PHP memory limit, max execution time nebo upload file size limit – pokud skript vyžaduje více prostředků, než povoluje konfigurace serveru, končí chybou 500. Na WordPressu se to často stává při importu velkých dat, nahrávání vysokorozlišených obrázků nebo na webech s mnoha pluginy. Řešením je zvýšení limitů v php.ini nebo wp-config.php.

  • Problém s databází

  • Nedostupná databáze, poškozená tabulka, překročení počtu povolených připojení nebo chybné přihlašovací údaje mohou způsobit chybu 500. Na WordPressu zkontrolujte soubor wp-config.php – zejména DB_NAME, DB_USER, DB_PASSWORD a DB_HOST. Někdy pomůže oprava databáze pomocí phpMyAdmin nebo WP-CLI.

  • Špatná oprávnění souborů a složek

  • Nesprávně nastavená oprávnění (permissions) mohou zabránit serveru v přístupu k potřebným souborům. Standardní nastavení je 644 pro soubory a 755 pro složky. Oprávnění 777 (zápis pro všechny) je bezpečnostní riziko a některé servery ho odmítnou a vrátí chybu 500. Nastavení se mění přes FTP klienta nebo SSH.

  • Konflikt nebo chyba v pluginu/modulu

  • Nově nainstalovaný nebo aktualizovaný plugin může být nekompatibilní s vaší verzí PHP, WordPressu nebo jiným pluginem. Na WordPressu deaktivujte všechny pluginy (přes FTP přejmenujte složku /wp-content/plugins/) a postupně je aktivujte jeden po druhém, dokud nenajdete viníka. U vlastních aplikací zkontrolujte changelog poslední aktualizace.

Jak diagnostikovat Internal Server Error

Prvním krokem při řešení chyby 500 je zjistit, kde přesně problém vzniká. Zapněte si zobrazování chyb v PHP (na vývojovém prostředí, nikdy na produkci!) nebo se podívejte do error logu. Error log je váš nejlepší přítel – najdete ho v hostingovém panelu (cPanel, Plesk) obvykle pod názvem "Error Log" nebo v souboru error_log v root složce webu. Log obsahuje časové razítko, typ chyby a přesný soubor a řádek, kde k problému došlo.

Pokud nemáte přístup k error logu nebo je prázdný, zkuste izolovat problém. Metodický přístup: Nejprve zkontrolujte .htaccess (přejmenujte ho dočasně). Pokud chyba přetrvává, problém není v .htaccess. Dále deaktivujte pluginy a přepněte na výchozí theme. Zkontrolujte wp-config.php (na WordPressu) – zejména databázové údaje a definici konstanty WP_DEBUG. Pokud máte přístup k serveru přes SSH, použijte PHP CLI k testování skriptů mimo webový server.

Užitečné je také zkontrolovat zdroje serveru. Přihlaste se do hostingového panelu a podívejte se na využití CPU, RAM a I/O operací. Pokud je server přetížený, chyba 500 může být symptomem nedostatku výkonu. V takovém případě zvažte upgrade hostingu, optimalizaci databázových dotazů nebo implementaci cache. Monitorovací nástroje jako New Relic nebo Sentry dokážou zachytit chyby v reálném čase a poskytnout detailní traceback.

Řešení chyby 500 krok za krokem

  • 1. Zkontrolujte error log

  • Přihlaste se do hostingového panelu a najděte error log. Hledejte poslední záznamy s časovým razítkem odpovídajícím okamžiku, kdy se chyba objevila. Log obvykle uvádí "Fatal error", "Parse error" nebo "Warning" spolu s názvem souboru a číslem řádku. To je váš první vodítko k příčině problému.

  • 2. Obnovte nebo opravte .htaccess

  • Přejmenujte stávající .htaccess na .htaccess_old přes FTP nebo File Manager. Pokud používáte WordPress, web automaticky vytvoří nový .htaccess při uložení permalinků v Nastavení → Trvalé odkazy. Pokud chyba zmizí, víte, že problém byl v .htaccess – postupně přidávejte zpět vlastní pravidla a testujte.

  • 3. Deaktivujte pluginy a themes

  • Na WordPressu přejmenujte složku /wp-content/plugins/ na /wp-content/plugins_old přes FTP. To deaktivuje všechny pluginy najednou. Pokud chyba zmizí, přejmenujte složku zpět a deaktivujte pluginy jeden po druhém v admin panelu. Viníka odstraňte nebo kontaktujte autora. Totéž zkuste s themes – přepněte na výchozí Twenty Twenty-Four theme.

  • 4. Zvyšte PHP limity

  • Upravte soubor wp-config.php (WordPress) nebo php.ini a zvyšte memory_limit (doporučeno 256M nebo 512M), max_execution_time (300 sekund) a upload_max_filesize (podle potřeby). Na WordPressu přidejte řádek: define('WP_MEMORY_LIMIT', '256M'); těsně před "That's all, stop editing!". U shared hostingu můžete často zvýšit limity i v .htaccess nebo .user.ini souboru.

  • 5. Zkontrolujte databázové připojení

  • Otevřte wp-config.php a ověřte údaje DB_NAME, DB_USER, DB_PASSWORD a DB_HOST. Zkuste se přihlásit do phpMyAdmin se stejnými údaji. Pokud se nepřihlásíte, problém je v přístupových údajích nebo databáze neexistuje. Zkontrolujte také, zda není databáze plná nebo překročen počet povolených připojení. Některé hostingy mají limit na počet současných MySQL připojení.

  • 6. Opravte oprávnění souborů

  • Přes FTP klienta nastavte oprávnění složek na 755 a souborů na 644. Nikdy nepoužívejte 777 – je to bezpečnostní riziko. Na Linuxu můžete hromadně nastavit oprávnění přes SSH: find /cesta/k/webu -type d -exec chmod 755 {} \; (složky) a find /cesta/k/webu -type f -exec chmod 644 {} \; (soubory).

  • 7. Kontaktujte hosting support

  • Pokud předchozí kroky nepomohly, problém může být na straně serveru – špatná konfigurace Apache/Nginx, nedostupný modul PHP nebo hardwarový problém. Kvalitní hosting vám pomůže s diagnostikou a často problém vyřeší během minut. Připravte si URL, kde k chybě dochází, a čas, kdy se chyba objevila.

Jak zabránit opakování chyby 500

Prevence je jednodušší než opakované řešení krizí. Pravidelné zálohy jsou základ – nastavte si automatické denní nebo týdenní zálohy webu včetně databáze. Mnoho hostingů nabízí zálohovací službu zdarma nebo za symbolický poplatek. Před jakoukoli větší změnou (instalace pluginu, aktualizace PHP, úprava .htaccess) si vytvořte manuální zálohu. Pokud se něco pokazí, obnovíte původní stav během minut.

Testujte změny na vývojovém prostředí, nikdy přímo na produkčním webu. Vytvořte si lokální kopii webu (pomocí Local by Flywheel, XAMPP nebo Docker) nebo staging prostředí u hostingu. Otestujte nový plugin, aktualizaci WordPressu nebo změny v kódu na stagingu. Teprve když vše funguje, přeneste změny na produkci. To dramaticky sníží riziko výpadků a chyb 500.

Implementujte monitoring a alerty. Nástroje jako UptimeRobot, Pingdom nebo StatusCake kontrolují dostupnost webu každých 5 minut a pošlou vám email nebo SMS při výpadku. Tak se o problému dozvíte dřív než vaši zákazníci. Pro WordPress existují pluginy jako Query Monitor nebo WP Debug Log, které zachycují chyby a upozornění ještě před tím, než způsobí pád webu. Investice do quality assurance a monitoringu se mnohonásobně vrátí v podobě stability a spokojenosti návštěvníků.

Nejčastější otázky o Internal Server Error 500

Co znamená chyba Internal Server Error 500? Rozbalit

Internal Server Error 500 je obecná serverová chyba, která znamená, že server narazil na neočekávaný problém a nemůže dokončit požadavek. Na rozdíl od chyb 4xx (např. 404), které značí problém na straně klienta, chyba 500 indikuje problém na serveru samotném. Může ji způsobit vadný kód, přetížení serveru, chyba v konfiguraci nebo problém s databází.

Jak rychle opravit chybu 500 na WordPressu? Rozbalit

Nejrychlejší řešení: 1) Zkontrolujte error log v hostingovém panelu, 2) Deaktivujte poslední nainstalovaný plugin přejmenováním složky /wp-content/plugins/ přes FTP, 3) Přepněte na výchozí WordPress theme, 4) Zvyšte PHP memory limit v wp-config.php (define('WP_MEMORY_LIMIT', '256M')), 5) Zkontrolujte .htaccess – přejmenujte a nechte WordPress vytvořit nový.

Ovlivňuje chyba 500 SEO a pozice v Google? Rozbalit

Ano, významně. Pokud Google crawler narazí opakovaně na chybu 500, web může být dočasně odstraněn z indexu. Krátkodobý výpadek (minuty) obvykle nevadí, ale delší nebo opakované výpadky vedou k poklesu pozic. Google Search Console vás upozorní na problémy se serverem. Rychlá oprava a monitoring jsou klíčové pro zachování SEO.

Jaký je rozdíl mezi chybou 500, 502 a 503? Rozbalit

Chyba 500 je obecná serverová chyba (problém s kódem nebo konfigurací). Chyba 502 Bad Gateway znamená, že server funguje jako gateway/proxy a dostal nevalidní odpověď od upstream serveru. Chyba 503 Service Unavailable značí, že server je dočasně nedostupný kvůli přetížení nebo údržbě. Všechny jsou 5xx serverové chyby, ale 500 je nejobecnější.

Související pojmy