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
<?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