S čím vám můžeme pomoci?

Nejčastější problémy po změně verze PHP

Co se může pokazit po přechodu na novější verzi PHP, jak chyby poznat a jak postupovat při jejich řešení.

Obsah návodu
  1. Odstraněné funkce
  2. Hlášky Deprecated a Warning
  3. Nekompatibilní pluginy a šablony WordPressu
  4. Starší verze aplikací
  5. Doporučený postup při změně verze
  6. Nejčastější chyby

Novější verze PHP přináší vyšší rychlost a bezpečnost, ale zároveň odstraňuje zastaralé funkce. Starší web nebo neaktualizovaný plugin se proto po přechodu může přestat načítat. Verzi PHP na hostingu mění technická podpora, postup je popsán v návodu Jak změnit PHP verzi?. Níže najdete nejčastější potíže, které po změně nastávají, a jak je řešit.

Odstraněné funkce

Nejčastější příčinou úplného výpadku webu je volání funkce, která v nové verzi PHP už neexistuje. Web pak skončí chybou Fatal error: Uncaught Error: Call to undefined function. Typické případy:

Funkce Odstraněno od Náhrada
mysql_connect, mysql_query a další mysql_* PHP 7.0 mysqli_* nebo PDO
ereg, eregi, split PHP 7.0 preg_match, preg_split
each PHP 8.0 cyklus foreach
create_function PHP 8.0 anonymní funkce (function () { … })
utf8_encode, utf8_decode PHP 8.2 označeno jako zastaralé mb_convert_encoding

Pokud jde o vlastní kód, je třeba ho upravit. Pokud jde o hotovou aplikaci či plugin, hledejte novější verzi.

Hlášky Deprecated a Warning

Hlášky typu Deprecated: Creation of dynamic property is deprecated nebo Warning: Undefined array key web většinou nezastaví, jen upozorňují, že kód používá zastaralý zápis. Návštěvníkům by se zobrazovat neměly, viz Jak zobrazit chyby PHP a kde najít error_log. Odstraní je aktualizace příslušného pluginu nebo šablony.

Nekompatibilní pluginy a šablony WordPressu

Samotný aktuální WordPress s novým PHP funguje. Problémy způsobují zpravidla starší pluginy a šablony, které autor už neaktualizuje. Jak najít viníka:

  1. Zapněte log chyb (WP_DEBUG_LOG) a podívejte se, ve které složce ve wp-content/plugins nebo wp-content/themes chyba vzniká.
  2. Pokud se nedostanete do administrace, přejmenujte přes FTP složku problémového pluginu (například na nazev-pluginu_off). WordPress ho tím deaktivuje.
  3. Plugin aktualizujte, nebo ho nahraďte udržovanou alternativou. U šablony přepněte dočasně na výchozí šablonu WordPressu.

Starší verze aplikací

Starší verze PrestaShopu (1.6 a nižší), Joomly (3.x a nižší) nebo jiných redakčních systémů nejsou s PHP 8 kompatibilní a jejich aktualizace bývá větší zásah. Před změnou verze PHP si ověřte v dokumentaci výrobce, kterou verzi PHP vaše vydání podporuje, a v případě potřeby aplikaci nejdříve aktualizujte.

Doporučený postup při změně verze

  1. Zálohujte soubory webu (stáhněte složku web přes FTP) i databázi (viz Jak exportovat databázi?).
  2. Aktualizujte redakční systém, všechny pluginy a šablonu na nejnovější verze ještě před změnou PHP.
  3. Požádejte podporu o změnu verze a hned poté projděte celý web: úvodní stránku, administraci, formuláře, košík a další důležité funkce.
  4. Pokud narazíte na chybu, kterou nedokážete rychle opravit, požádejte podporu na podpora@datahost.cz o dočasný návrat k původní verzi. Získáte tak čas na opravu bez výpadku webu.
Tip

Ve WordPressu si můžete kompatibilitu předem ověřit pluginem PHP Compatibility Checker. U vlastního kódu pomůže nástroj PHPCompatibility pro PHP_CodeSniffer.

Nejčastější chyby

  • Bílá stránka bez hlášky. Zapněte výpis chyb nebo se podívejte do souboru error_log.
  • Chyba se objevuje jen v některé části webu. Obvykle jde o jeden konkrétní plugin nebo modul; hláška uvádí cestu k souboru.
  • Web funguje, ale zobrazuje hlášky Deprecated. Vypněte display_errors a naplánujte aktualizaci dotčeného kódu.

Nenašli jste co hledáte?

Obraťte se na nás.
Odpovíme nejpozději do 24 hodin.

Napsat podpoře