2016-03-13 73 views
0

我有一個prestashop網站。我使用一個模塊進行xml導出,之前是完美的,但我移動了新的服務器並安裝了nginx + php-fqm但不是很少我努力使新的XML導出的事情給錯誤Prestashop - 非對象的成員函數executeS()

致命錯誤:調用一個成員函數執行()一個非對象在/modules/prestacenterxmlexportpro/classes/PcXmlProService.php上線75

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. 行是return self :: $ db-> executeS($ sql);

Nginx的錯誤日誌是 016/03/13 11點15分53秒[錯誤] 1034#0:* 107886的FastCGI在標準錯誤發送:「PHP消息: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「

回答

2

您不應該使用self::$db,這是一個古老而不良的做法,已經被貶損,可能在新版本的PrestaShop中甚至不可用。您可以使用Db::getInstance()->executeS

此外,self::$db僅在ObjectModel類或擴展它的類中可用。我不知道你的錯誤是否延續了ObjectModel

爲什麼self::$db可能無法正常工作的另一個原因是因爲你使用public static function,這意味着GET方法的靜態調用,這意味着__construct函數不叫,這將初始化self::$db = Db::getInstance()

+0

謝謝你的回答,擴展類是ObjectModel。當我使用這樣的 返回self :: $ db = Db :: getInstance($ sql);不工作更多的錯誤,但沒有得到列表:/ – ZgrKARALAR

+0

但你是天才:)我修復問題非常感謝你,我改變它像這樣self :: $ db = db :: getInstance(); \t \t return self :: $ db-> executeS($ sql); – ZgrKARALAR

相關問題