Hogyan frissítsünk PHP 8 verzióra úgy, hogy elkerüljük a hibákat a weboldalon?
Amikor ezt a cikket írom, épp életciklusa végéhez ér a PHP 7.4-es verziója, így nem kap többé biztonsági frissítéseket. Ideje frissíteni a PHP-t, így összefoglalom, hogyan próbáljuk megelőzni a hibákat a weboldalon. Azt is leírom, milyen problémákkal szembesültem különböző tárhelyeken, ahol joomla és wordpress weboldalaim vannak, és mi volt a megoldás. Néhol a tárhelyszolgáltató frissíti a PHP-t, a weboldal tulajdonosok pedig csak egy hibaüzenettel szembesülnek a weboldalukon. Egy 500 Error esetén próbálkozzunk a tárhelyszolgáltatónál, hátha meg tudja oldani a problémát. Ez a cikk inkább a hibák elkerüléséről szól, de a cikk végén van 1-2 tipp 500 Error esetére is.
1. Kompatibilitás ellenőrzése
Először is ellenőrizzük, hogy a szoftvereink mely PHP verzióval kompatibilisek. Ez nem is olyan egyszerű. A kisebb bővítményeinkről csak utólag derül ki, hogy kompatibilisek-e, így hát nem biztos hogy elkerülhetjük a címben említett hibaüzeneteket. Ne a legújabb PHP verzióra frissítsünk, amikor ezt írom, PHP 7.4-ről 8.0-ra érdemes. A wordpress kompatibilitásáról itt található információ, míg a joomla esetén ezen az oldalon tájékoztatnak minket.
2. Mentés és frissítés
Készítsünk mentést a weboldalunkról, és fríssítsük a WordPress-t vagy Joomla-t, a sablont és a bővítményeket. Teszteljük a weboldalunkat a frissítések után!
3. Hibák kiiratása vagy naplózása
A Joomla admin felületén a Global configurations/Server/Error reporting : Maximum beállítással irathatjuk ki a hibákat. A wordpress-ben pedig a wp-config.php fájlban kell a következő módosításokat elvégeznünk:
// WP_DEBUG bekapcsolása
define( 'WP_DEBUG', true );
// naplózás a /wp-content/debug.log fájlba
define( 'WP_DEBUG_LOG', true );
// ne a weboldalra írja ki a hibákat
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
Ekkor a /wp-content/debug.log fájlba írja a hibaüzeneteket.
4. PHP verzió váltás

A PHP verzióváltást a cpanel-ben végezhetjük el. Ha csak a MultiPHP menedzser elérhető a cpanel-ben, akkor ott kell beállítani a új PHP verziót, majd a MultiPHP ini szerkesztőben érdemes beállítani pár PHP direktíva értéket. A wordpress-hez minimum ekkora értékeket javasolok: memory_limit=512M, post_max_size=32M, upload_max_size=32M. Joomla esetén kisebb memory_limit=128M is elég. A megnövelt memory_limit-tel elkerülhetjük az alábbi hibát:
Fatal error: Allowed memory size of 33445566 bytes exhausted
Ha csak a Select PHP version elérhető a cpanel-ben, akkor ott kell beállítani a új PHP verziót, és a fenti PHP direktíva értékeket is. Itt még PHP kiterjesztéseket/modulokat is be lehet kapcsolni ha szükséges. Az adatbáziskapcsolat biztosításához érdemes bekapcsolni az alábbi képen látható PHP modulokat, de ha nincs mysqlnd, akkor mysqli-t keressünk. A wordpress még igényli az imagick modul bekapcsolását is.

Ezzel elkerülhetjük az alábbi típusú hibaüzeneteket:
PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in public_html/wp-includes/class-wpdb.php:1810
Egyéb hibaüzenetek esetén lehet hogy ki kell kapcsolnunk azt a wordpress vagy joomla bővítményt, amelyre a hibaüzenet vonatkozik, mert lehet hogy nem kompatibilis az új PHP verzióval. Ehhez a cpanel-ben vissza kell állnunk a PHP korábbi verziójára, hogy be tudjunk lépni a WordPress vagy Joomla admin felületére. Az is működhet, ha átnevezzük a hibás bővítmény könyvtárát.
Végül, ha kiküszöböltünk minden hibát az alapos tesztek során, kapcsoljuk ki a hibák kiiratását vagy naplózását. Állítsuk vissza a Joomla admin felületén a Global configurations/Server/Error reporting : None értéket, WordPress-ben pedig a define( ‘WP_DEBUG’, false); értéket a wp-config.php fájlban, és töröljük a debug.log fájlt!