Неустранимая ошибка PHP: Uncaught MDB2 Ошибка: неизвестная ошибка Код: -1 \ n - PullRequest
2 голосов
/ 31 мая 2019

Я пытаюсь снова запустить наш старый скрипт.

Предисловие;мы используем специально написанный / измененный скрипт от кого-то, кто умер.Мы не можем использовать что-то еще.Сценарий выполняется на старом сервере, но сервер действительно устарел, поэтому я пытаюсь перенести все на новый сервер. На текущем (старом) сервере все еще работает 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), однако ... Почему-то я больше не могу войти в систему.Я предполагаю, что это действительно нужно.

URL также немного изменился, по-видимому, теперь он показывает:

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

Вместо:

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

Так что я думаю,это не сработает.У кого-нибудь другая идея?

...