2013-07-19 61 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

相关问题