PHP Fatal error: Uncaught Error: Call to a member function query() on null

Si activas el módulo de LiteSpeed Cache para PrestaShop y en el archivo error_log de tu web ves el siguiente error:


PHP Fatal error:  Uncaught Error: Call to a member function query() on null


El error completo puede ser algo así:


[STDERR] PHP Fatal error:  Uncaught Error: Call to a member function query() on null in /home/usuariocpanel/public_html/classes/db/DbPDO.php:156

Stack trace:

#0 /home/usuariocpanel/public_html/classes/db/Db.php(376): DbPDOCore->_query('\n\t\t\tSELECT `iso...')

#1 /home/usuariocpanel/public_html/classes/db/Db.php(663): DbCore->query('\n\t\t\tSELECT `iso...')

#2 /home/usuariocpanel/public_html/classes/db/Db.php(697): DbCore->getRow('\n\t\t\tSELECT `iso...', true)

#3 /home/usuariocpanel/public_html/classes/Country.php(274): DbCore->getValue('\n\t\t\tSELECT `iso...')

#4 /home/usuariocpanel/public_html/modules/litespeedcache/classes/VaryCookie.php(234): CountryCore::getIsoById(6)

#5 /home/usuariocpanel/public_html/modules/litespeedcache/classes/VaryCookie.php(76): LiteSpeedCacheVaryCookie->init(Object(Context), Object(Cookie))

#6 /home/usuariocpanel/public_html/modules/litespeedcache/classes/VaryCookie.php(101): LiteSpeedCacheVaryCookie->__construct()

#7 /home/usuariocpanel/public_html/modules/litespeedcache/litespeedcache.php(464): LiteSpeedCacheVaryCookie::setVary()

#8 /home/usuariocpanel in /home/usuariocpanel/public_html/classes/db/DbPDO.php on line 156


Para solucionar este error, debes ir a la configuración del módulo de LiteSpeed Cache, ir al apartado Context Vary bypass y escribir la palabra "lang", "ctry" ó "curr" según sea el error que aparezca en el log.


En el ejemplo de arriba vemos que hay un error con "Country.php" por lo tanto en este ejemplo habría que poner la variable "ctry".


Si está relacionado con "lang" entonces debes poner "lang". Ejemplo:


Más info sobre este bug:


https://github.com/litespeedtech/lscache_prestashop/issues/44



NOTA: En el caso de que los errores se sigan produciendo, cambiar la línea del archivo "/modules/litespeedcache/classes/VaryCookie.php":


Reemplazar en línea 221:

$isMobile = $diffMobile ? $context->getMobileDevice() : false;


por: 


$isMobile = $diffMobile ? $context->isMobile() : false;