Prováděl jsem migraci jednoho z webových stránek Joomla a uvízl jsem u „PHP fatální chyba Nezachycená chyba:Volání nedefinované funkce apc_fetch()“. Pokud narazíte na podobnou chybu, zde je návod, jak ji vyřešit. Předtím je níže snímek chyby:
Fatal error: Uncaught Error: Call to undefined function apc_fetch() in /var/www/libraries/joomla/cache/storage/apc.php:35 Stack trace: #0 /var/www/libraries/joomla/cache/cache.php(188): JCacheStorageApc->get('ab82b3238b14dcb...', 'Gantry', true) #1 /var/www/libraries/joomla/cache/controller.php(179): JCache->get('ab82b3238b14dcb...', 'Gantry') #2 /var/www/libraries/gantry/core/utilities/cache/joomlaCacheDriver.class.php(40): JCacheController->get('ab82b3238b14dcb...', 'Gantry') #3 /var/www/libraries/gantry/core/utilities/cache/cache.class.php(135): JoomlaCacheDriver->exists('Gantry', 'ab82b3238b14dcb...') #4 /var/www/libraries/gantry/core/utilities/gantrycache.class.php(240): GantryCacheLib->get('Gantry', 'ab82b3238b14dcb...') #5 /var/www/libraries/gantry/gantry.php(269): GantryCache->addWatchFile('/var/www/cfw_pr...') #6 /var/www/libraries/gantry/gantry.php(432): gantry_setup() #7 /var/www/templates/rt_cla in /var/www/libraries/joomla/cache/storage/apc.php on line 35
Jak opravit závažnou chybu PHP – Volání nedefinované funkce apc_fetch()?
Řešení: Při pohledu na chybu je jasné, že aplikace očekává PHP APC modul, který má být povolen.
Existují dva způsoby, jak to vyřešit:
Možnost 1: Nainstalujte modul PHP APC pomocí níže uvedeného příkazu:
#apt-get install php7.0-apc
Poté restartujte webový server
#/etc/init.d/apache2 restart
Možnost 2: Pokud nechcete, aby se APC používal pro ukládání do mezipaměti, jednoduše jej deaktivujte. Otevřete configuration.php soubor a vyhledejte řádek níže:
public $cache_handler = 'apc';
A nahraďte jej:
public $cache_handler = 'file';
Tímto způsobem bude Joomla používat soubor jako obslužný program mezipaměti namísto APC.
Voila, Joomla teď funguje skvěle!