最近将我们的服务器升级到 5.4 并开始出现以下错误
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
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 上发布这个。
为了我自己的利益?不再。但事实是,会有很多人在寻找这个在别处找不到的答案。我希望这里有人能找到解决方案。如果没有,相信我,我不会为此失眠。