我有一个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);
}
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“
答案 0 :(得分:2)
你不应该使用self::$db
,这是一种古老而糟糕的做法,在新版本的PrestaShop中已被删除,甚至可能无法使用。
相反,您应该使用Db::getInstance()->executeS
。
此外,self::$db
仅适用于扩展它的ObjectModel
类或类。我无法告诉您错误,该课程是否延伸ObjectModel
。
self::$db
可能无效的另一个原因是因为您正在使用public static function
,这意味着该方法被静态调用,这意味着__construct
函数不是&# 39; t调用,初始化self::$db = Db::getInstance()