我正在尝试让我们的旧脚本再次运行。
前言; 我们正在使用已故某人的自定义书面/修改脚本。我们不能使用别的东西。该脚本在旧服务器上运行,但服务器确实已经过时,所以我正在尝试将所有内容迁移到更新的服务器。当前(旧)服务器仍在运行 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 模块的更多信息,请参见此处。
正在显示的错误如下:
[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 上),但是……由于某种原因,我无法再登录了。我猜它真的需要它。
网址也明显发生了一些变化,现在显示:
hxxp://domain.com/index.php?view=login&PHPSESSID=
代替:
hxxp://domain.com/index.php?view=start&session=56d1fdf45cf1400e8e75f
所以我想那是行不通的。有人有不同的想法吗?