最近升級我們的服務器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://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上發佈這個。
爲了我自己的利益?不再。但事實是,會有很多人在尋找答案,他們不會在別處找到他們。我希望有人能找到解決辦法。如果沒有,相信我,我不會爲此而失去任何睡眠。
你可以發表一些代碼爲login_class.php行:123(或完整的代碼,如果可能的話) – Maximus2012
聽起來像你沒有正確安裝PEAR。 – Barmar
@ Maximus2012我敢打賭,任何數量的行123是'$ this-> db = DB :: connect($ dsn);' – Barmar