Prestashop - 非对象

时间:2016-03-13 09:29:07

标签: php nginx pdo prestashop prestashop-1.6

我有一个prestashop网站。我正在使用一个模块进行xml导出它之前是完美的但我移动新服务器并安装nginx + php-fqm但不是很少我尝试使新的xml导出事情给出错误

致命错误:在第75行的/modules/prestacenterxmlexportpro/classes/PcXmlProService.php中的非对象上调用成员函数executeS()

该75.行在getList函数内部是getlist函数

public static function getList()
{
    $query = new DbQuery;
    $sql = $query
        ->select('`'.self::$definition['primary'].'` id')
        ->select('`name`')
        ->from(self::$definition['table'])
        ->orderBy('id')
        ->build();
     return self::$db->executeS($sql);
}
  1. line is return self :: $ db-> executeS($ sql);
  2. Nginx错误日志是 016/03/13 11:15:53 [错误] 1034#0:* 107886在stderr中发送的FastCGI:“PHP消息:PHP致命错误:在/ modules / prestacenterxmlexportpro中的非对象上调用成员函数executeS()第75行“/classes/PcXmlProService.php”,同时从上游读取响应头,客户端:127.0.0.1,服务器:www.mywebpage.com,请求:“GET /adminroutee12321/index.php?controller=PcXmlPro&addpc_xmlpro_feed&token= b7e61f451c9a702701c2cd0c10174a3a HTTP / 1.1“,上游:”fastcgi:// unix:/var/run/php5-fpm.sock:“,主持人:”www.mywebpage.com“

1 个答案:

答案 0 :(得分:2)

你不应该使用self::$db,这是一种古老而糟糕的做法,在新版本的PrestaShop中已被删除,甚至可能无法使用。

相反,您应该使用Db::getInstance()->executeS

此外,self::$db仅适用于扩展它的ObjectModel类或类。我无法告诉您错误,该课程是否延伸ObjectModel

self::$db可能无效的另一个原因是因为您正在使用public static function,这意味着该方法被静态调用,这意味着__construct函数不是&# 39; t调用,初始化self::$db = Db::getInstance()