Merkur csomagjainkba telepített Joomla/WordPress rendszerek esetén a 8.0-ás PHP verziót használva a keretrendszer frissítése a tárhely disabled_functions PHP beállítása és a PHP8-ban bevezetett változás miatt jelenleg hibára fut.
A problémát a Joomla/WordPress frissítést elvégző kódjában szereplő “set_time_limit(300)” függvény okozza, amely csomagjainkban letiltott funkció.
A PHP8-as verziójától kezdődően a disabled_functions listában felsorolt függvények már nem csak figyelmeztetés (warning) szinten jelentkeznek a php kód futtatása során, hanem ismeretlen függvény hibaként (error) és így meg is akasztják annak végrehajtását.
PHP has a feature to disable certain functions and classes with disable_functions and disable_classes INI directives. This is often used as a security measure to disable potentially unsafe functions.
This functionality still exists in PHP 8, but the disabled functions behave as if they are not declared at all.
Prior to PHP 8, attempting to use a disabled functions resulted in a warning:
Warning: substr() has been disabled for security reasons in … on line …
In PHP 8 and later, attempting to use a disabled function will throw a standard error for an undeclared function:
Fatal error: Uncaught Error: Call to undefined function substr() in …:…
— https://php.watch/versions/8.0/disable_functions-redeclare
Amíg a Joomla/WordPress fejlesztői részéről nem készül a megváltozott PHP környzethez igazodó módosítás a frissítést végző kódrészletben, tárhelyeinken az alábbi megoldás használható a probléma áthidalásához.
A Joomla/WordPress konfigurációs file-jában (configuration.php / wp-config.php) definiálni lehet az “ismeretlen” set_time_limit() függvényt, így a futtatás során nem keletkezik belőle hiba. Ezt az alábbi kódrészlet beszúrásával lehet elvégezni:
if (!function_exists('set_time_limit')) {
function set_time_limit() {}
}