Ir al contenido principal

Error LiteSpeed Cache PrestaShop y One Page Checkout

Escrito por Javier Galeote

Si en PrestaShop v 1.7.x instalas el módulo One Page Checkout junto a LiteSpeed Cache para PrestaShop, se producen errores cuando te logueas en la página al hacer el pago.

Los errores que se registran en el error_log son los siguientes (donde "username" es tu usuario de cPanel):

Fatal error: Uncaught Symfony\Component\Debug\Exception\ContextErrorException: Notice: Undefined property: DbPDO::$link in /home/username/public_html/classes/db/DbPDO.php:166
Stack trace
n#0 /home/username /public_html/classes/db/Db.php(376): DbPDOCore->_query('SELECT c.`id_cu...')\

n#1 /home/username/public_html/classes/db/Db.php(663): DbCore->query('SELECT c.`id_cu...')\

n#2 /home/username/public_html/classes/db/Db.php(697): DbCore->getRow('SELECT c.`id_cu...', true)\

n#3 /home/username/public_html/classes/Customer.php(841): DbCore->getValue('SELECT c.`id_cu...')\

n#4 /home/username/public_html/classes/Customer.php(1281): CustomerCore::checkPassword('2331', '$2y$10$iT3d15YA...')\

n#5 /home/username/public_html/modules/litespeedcache/classes/VaryCookie.php(299): CustomerCore->isLogged()\

n#6 /home/username/public_html/modules/litespeedcache/classes/VaryCookie.php(78): LiteSpeedCacheVaryCookie->init(Object(Context), Object(Cookie))\

n#7 /home/username /public_html/staging/mo in /home/username/public_html/classes/db/DbPDO.php on line 166\n

El error se produce en la línea 166 del archivo:

/classes/db/DbPDO .php

protected function _query($sql)
{
        return $this->link->query($sql);
}

El problema es que link, que es la conexión a la base de datos, no existe en ese archivo.

Solución al error: crear un override

Lo podemos resolver temporalmente creando un override, creando el archivo /override/classes/db/DbPDO .php

class DbPDO extends DbPDOCore
{
    protected function _query($sql)
    {
        if (empty($this-link)) {
            $this->connect();
        }        return parent::_query($sql);
    }
}

Gracias @pablo-madagascar por ofrecernos esta solución

¿Ha quedado contestada tu pregunta?