PHP致命错误:未捕获的MDB2错误:未知错误代码:-1 \ n

时间:2019-05-31 13:55:05

标签: php pear mdb2

我正在尝试重新使用旧脚本。

前言;我们正在使用去世者的自定义书面/修改后脚本。我们不能使用其他东西。该脚本在旧服务器上运行,但是该服务器实际上已经过时,因此我正在尝试将所有内容迁移到较新的服务器上。 当前(旧)服务器仍在运行CentOS 5.x,以及PHP 5.3和MySQL 5.5。所以已经很老了。

无论如何,经过几个小时的调整,我设法使其在CentOS 6.x服务器和MySQL 5.6上运行。这样很好。我可能还会在CentOS 7.x上运行它,这将是一个不同的步骤。当前的主要问题是该脚本不幸地拒绝在PHP 5.3之外的更高版本上运行。哎呀,我什至都无法摆脱在“升级”到PHP 5.4之后抛出的第一条错误消息。

据我所知,问题是由一个(非常过时的)PEAR模块引起的,该模块称为: HTTP_Session2 。有关此PEAR模块的更多信息,请参见here

正在显示的错误如下:

[Fri May 31 14:05:42 2019] [error] [client 192.168.0.1] PHP Fatal error:  Uncaught MDB2 Error: unknown error Code: -1\n  thrown in /usr/share/pear/HTTP/Session2/Container/MDB2.php on line 187
[Fri May 31 14:05:42 2019] [error] [client 192.168.0.1] PHP Fatal error:  Uncaught MDB2 Error: unknown error Code: -1\n  thrown in /usr/share/pear/HTTP/Session2/Container/MDB2.php on line 187
[Fri May 31 14:05:42 2019] [error] [client 192.168.0.1] PHP Fatal error:  Uncaught MDB2 Error: unknown error Code: -1\n  thrown in /usr/share/pear/HTTP/Session2/Container/MDB2.php on line 187
[Fri May 31 14:05:42 2019] [error] [client 192.168.0.1] PHP Fatal error:  Uncaught MDB2 Error: unknown error Code: -1\n  thrown in /usr/share/pear/HTTP/Session2/Container/MDB2.php on line 187
[Fri May 31 14:05:42 2019] [error] [client 192.168.0.1] PHP Fatal error:  Uncaught MDB2 Error: unknown error Code: -1\n  thrown in /usr/share/pear/HTTP/Session2/Container/MDB2.php on line 187
[Fri May 31 14:05:42 2019] [error] [client 192.168.0.1] PHP Fatal error:  Uncaught MDB2 Error: unknown error Code: -1\n  thrown in /usr/share/pear/HTTP/Session2/Container/MDB2.php on line 187
[Fri May 31 14:05:43 2019] [error] [client 192.168.0.1] PHP Fatal error:  Uncaught MDB2 Error: unknown error Code: -1\n  thrown in /usr/share/pear/HTTP/Session2/Container/MDB2.php on line 187
[Fri May 31 14:05:43 2019] [error] [client 192.168.0.1] PHP Fatal error:  Uncaught MDB2 Error: unknown error Code: -1\n  thrown in /usr/share/pear/HTTP/Session2/Container/MDB2.php on line 187
[Fri May 31 14:05:44 2019] [error] [client 192.168.0.1] PHP Fatal error:  Uncaught MDB2 Error: unknown error Code: -1\n  thrown in /usr/share/pear/HTTP/Session2/Container/MDB2.php on line 187
[Fri May 31 14:05:44 2019] [error] [client 192.168.0.1] PHP Fatal error:  Uncaught MDB2 Error: unknown error Code: -1\n  thrown in /usr/share/pear/HTTP/Session2/Container/MDB2.php on line 187

该代码的完整部分是:

    169     /**
    170      * Read session data
    171      *
    172      * @param string $id The Id!
    173      *
    174      * @return mixed
    175      * @throws HTTP_Session2_Exception An exception!?
    176      * @todo   Get rid off sprintf()
    177      */
    178     public function read($id)
    179     {
    180         $query = sprintf("SELECT data FROM %s WHERE id = %s AND expiry >= %d",
    181             $this->options['table'],
    182             $this->db->quote(md5($id)),
    183             time());
    184
    185         $result = $this->db->queryOne($query);
    186         if (MDB2::isError($result)) {
    187             throw new HTTP_Session2_Exception($result->getMessage(),
    188                 $result->getCode());
    189         }
    190         $this->crc = strlen($result) . crc32($result);
    191         return $result;
    192     }

第187行显然是导致错误的原因。

到目前为止我尝试了什么?

请记住,我也不是编码专家。所以我确实尽了最大的努力。我已经在互联网,论坛和GitHub上搜索了此错误的解决方案或解决方法。但没有运气。

我也尝试删除/注释掉那部分代码,但这会导致新的错误。例如:

Fatal error: Class HTTP_Session2_Container_MDB2 contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (HTTP_Session2_Container_Interface::read) in /usr/share/pear/HTTP/Session2/Container/MDB2.php on line 55

我也尝试更新所有PEAR模块,但是其中一些根本没有任何更新(包括/尤其是HTTP_Session2模块)。

因此,我正在寻找可行的解决方案或解决方法。因此,我可以在服务器上使用更新的PHP版本。如果没有,我将使用PHP 5.3。尽管只能由我们访问该服务器,但我还是出于各种原因对其进行了更新。

也许还可以从所有代码中完全删除HTTP_Session2模块,或者通常将其禁用?我不知道这对应用程序是否重要。我确实注意到会话已记录。但是谁知道呢?如果只是用来显示当前或类似状态的在线用户,则可以安全删除吗?

无论如何,预先感谢您浏览此线程。如果您需要更多信息或其他任何信息,请告诉我,我将尝试提供尽可能多的信息。

更新

可能我是一个完全的白痴,但是我在所有地方(在它所在的每个文件中)都删除了对“ HTTP_Session2”的所有引用。结果;接口正在加载(在PHP 5.4上第一次),但是...由于某种原因,我无法再登录。我猜它真的需要它。

URL也明显改变了一点,现在显示:

hxxp://domain.com/index.php?view=login&PHPSESSID=

代替:

hxxp://domain.com/index.php?view=start&session=56d1fdf45cf1400e8e75f

所以我想那是行不通的。有人有不同的想法吗?

0 个答案:

没有答案