Prestashop Cache APC Error
“APC cache has been enabled, but the APC or APCu extension is not available
at line 43 in file classes/cache/CacheApc.php“
Ecco il più fastidioso dei problemi che può succedere quando una mattina il vostro provider decide di passare alla versione di PHP 7.4 senza avvisarvi e voi avere installato Prestashop 1.6 e lavoravate con la versione di PHP 5.4.
Un bel giorno vi alzate e trovate un ERRORE 500 su qualsiasi parte del sito e non sapete il perchè,
la prima cosa da fare è andare sul file /home/miosito/config/defines.inc.php e attivare la modalità debug impostando
if (!defined(‘_PS_MODE_DEV_’)) {
define(‘_PS_MODE_DEV_’, true);
}
A questo punto vi uscirà il famoso Prestashop Cache APC Error:
“APC cache has been enabled, but the APC or APCu extension is not available
at line 43 in file classes/cache/CacheApc.php”
Anche se può sembrare un errore difficile da risolvere, la soluzione è abbastanza semplice, intanto capiamo cosa è successo.
APC è una cache alternativa come dice la stessa parola, è una libreria nativa di PHP che precompila il codice associato agli script e quindi velocizza molto dopo la prima richiesta fatta ai file PHP, purtroppo questa libreria non è compatibile con PHP 7.4 ed ecco che, se nel vostro prestashop avevate di default attiva questa tipo di cache, il sito va in crash quando si passa alla versione di PHP 7.4.
La soluzione a questo problema è semplicemente quella di impostare di default un altro dipo di cache, per esempio la cache Fs , tutto questo si fa agendo sul file /home/miosito/config/settings.inc.php modificando questa linea di codice
define(‘_PS_CACHING_SYSTEM_’, ‘CacheApc‘);
con questa
define(‘_PS_CACHING_SYSTEM_’, ‘CacheFs‘);
In questo modo il vostro problema sarà risolto, ricordatevi di togliere la modalità debug ripristinando nel file /home/miosito/config/defines.inc.php la modalità normale
if (!defined(‘_PS_MODE_DEV_’)) {
define(‘_PS_MODE_DEV_’, false);
}
Attenzione!!!
A volte può capitare che la verisone di PHP 7.4 non abbia attive le estensioni pdo_mysql e mysqli che servono per accedere al database, assicuratevi sempre che siano attive, in alternativa si possono attivare modificando il file php.ini ed inserendo le seguenti righe:
extension=pdo_mysql
extension=mysqli
Per qualsiasi dubbi o informazione non esitate a contattarmi.