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