2013-07-19 122 views
3

最近升級我們的服務器5.4,並開始收到以下錯誤非靜態方法DB ::連接()不應該叫靜態

Non-static method DB::connect() should not be called statically 

我研究過這件事&下來,每一個解決方案介紹沒有工作。我試着在文件級別,目錄級別和服務器級別關閉嚴格的錯誤報告。即出現在瀏覽器中的實際的錯誤是:

DB Error: connect failed module: /path/to/login_class.php line: 49 

編輯:從發佈的lib_app.php完整的代碼:

<?php 
/*-------------------------------------------------------------------------- 

$RCSfile: lib_app.php,v $ 

Purpose: Defines App class. This class is a container for 
      application global variables such as database 
      connection. 

Copyright: 2003 ** Author Omitted ** 

--------------------------------------------------------------------------- 
    Functions: 

    - none 

    Classes: 

     App - global application class, holds global variables 

---------------------------------------------------------------------------   
$Log: lib_app.php,v $ 
Revision 1.1.1.1 2004/08/05 23:50:39 ** Author Omitted ** 



--------------------------------------------------------------------------*/ 

if (!defined('PHP_APP')) 
    die('<br>'.__FILE__.': This program cannot function without application framework<br>'); 


class App{ 

    var $dsn;       // db connection string 
    var $db;       // db connection object 
    var $state;       // application status 
    var $debug = CONFIG_DEBUG;   // debug status 

    function App($dsn){ 

     $this->dsn = $dsn; 
     $this->db = DB::connect($dsn); 

     if (DB::isError($this->db)) { 

      die($this->db->getMessage() . ' module: ' . __FILE__ . ' line: ' . __LINE__); 
     } 
    } 
} // class 
?> 

請,有沒有人解決了這個問題,能夠幫助?我引用了許多其他網站,包括Stack上的一個數字。納達。

附錄:我們清楚地知道,對於那些會讓我「學習PDO」或者「埋葬這個遺物並在上面放些鹽」的仇敵,同時歡迎和讚賞,請注意這不是我的代碼。這實際上是一個可能應該被埋葬的遺蹟。然而,這是一個後端客戶管理程序,它與客戶一起「設計」並編寫了很多前端程序,他們特別要求不要觸及管理區域。我不打算重寫整個混賬東西,如果我不爲它付出,但非常想解決這個爲人類的更大的社區在那裏:

http://pear.php.net/bugs/bug.php?id=12057

http://forums.devshed.com/php-development-5/non-static-method-db-connect-should-not-be-called-statically-462291.html

http://php.brickhost.com/forums/index.php?topic=10756.0

Error message Strict standards: Non-static method should not be called statically in php

http://forums.phpfreaks.com/topic/265563-help-me-non-static-method-db/

http://forums.codewalkers.com/pear-packages-47/non-static-method-warnings-php-5t-4796.html

對於那些已經收到零的更大的社區人羣來說,這將與這種特殊情況有關,並且會比其他任何東西更刺戳和刺激他們過時的代碼。

讓我把它放在你身上。我已經降級到PHP 5.3,所以錯誤不再出現。一切正常。但是,對於這個在所有的笑和指向中都錯過的問題,需要有一些答案,並且快速地「關掉錯誤報告」(這不起作用),並且非特定的評論聲明爲非靜態變量(derr)。沒有$ @#!傢伙。如果這很簡單,我甚至不會在Stack上發佈這個。

爲了我自己的利益?不再。但事實是,會有很多人在尋找答案,他們不會在別處找到他們。我希望有人能找到解決辦法。如果沒有,相信我,我不會爲此而失去任何睡眠。

+0

你可以發表一些代碼爲login_class.php行:123(或完整的代碼,如果可能的話) – Maximus2012

+0

聽起來像你沒有正確安裝PEAR。 – Barmar

+0

@ Maximus2012我敢打賭,任何數量的行123是'$ this-> db = DB :: connect($ dsn);' – Barmar

回答

1

對不起的人,

但珍珠是過時或他的繼任者是MDB2,可以考慮升級到類似PDO insted的

瞭解詳細信息...PDO

+0

所以基本上,因爲這不是我的代碼,而且我不打算重寫6000行代碼免費,我唯一的解決方案是降級到不推薦的PHP 5.3? – FurryWombat

+1

答案是肯定的,如果你不使用一些ORM或者你的代碼已經在某些核心方式上處理了sql。 很多人不會從5.3 –

+0

降級到現在的5.3。儘快讓我們的服務器儘快離開這些傢伙。 – FurryWombat

相關問題