Daloradius - класс 'DB' не найден, но "груша /DB" устарела

Я использую Centos 7, FreeRADIUS 3.0.4, PHP 5.4.16, httpd Apache/2.4.6.

Я могу войти в экран входа в систему Daloradius и затем получить ОШИБКУ 500 в браузере на странице../daloradius/dologin.php.

Ошибки в журнале php:

[Fri Apr 07 15:59:48.455964 2017] [:error] [pid 2145] [client 154.66.144.101:53132] PHP Warning:  include_once(DB.php): failed to open stream: No such file or directory in /var/www/html/daloradius/library/opendb.php on line 84, referer: http://server/daloradius/login.php
[Fri Apr 07 15:59:48.456091 2017] [:error] [pid 2145] [client 154.66.144.101:53132] PHP Warning:  include_once(): Failed opening 'DB.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/daloradius/library/opendb.php on line 84, referer: http://server/daloradius/login.php
[Fri Apr 07 15:59:48.456241 2017] [:error] [pid 2145] [client 154.66.144.101:53132] PHP Fatal error:  Class 'DB' not found in /var/www/html/daloradius/library/opendb.php on line 86, referer: http://server/daloradius/login.php

"сервер" - это просто место для нашего реального полного доменного имени.

Я прочитал, что исправление заключается в установке Pear DB, но он ограничен, поэтому я установил MDB2 и его драйвер MySQLi.

Пожалуйста, помогите в решении, я очень новичок в этой системе..

2 ответа

У меня была похожая ошибка, centos 7, daloradius-0,9-9. Я сделал следующий

yum install php-pear php-pear-DB

Теперь все ок

Да, daloRADIUS не поддерживается. Все, что является частью вашей инфраструктуры безопасности, требует постоянного внимания. Вы действительно хотите серьезно подумать, если вы хотите положиться на пакет, который якобы мертв. Если вы не являетесь программистом и способны владеть 100% обслуживанием своего собственного форка кодовой базы, на земле нет никакого пути, я бы порекомендовал вам когда-нибудь подумать о его использовании для решения любых критических задач.

Да, DB устарела - хотя я полагаю, что они все еще делают исправления безопасности для поддержки устаревших установок... даже MDB2 кажется ненужным, учитывая нативную функциональность php в наши дни. Но, поскольку я не хотел переписывать весь DAL, я подумал, что MDB2, вероятно, был путем наименьшего сопротивления. Это то, что потребовалось для переноса БД => MDB2.

Сначала вам нужно установить классы MDB2:

shell> pear install MDB2
shell> pear install MDB2_Driver_mysql

Затем вы должны исправить исходный код, чтобы фактически использовать его:

shell> cd /your/daloradius/root
shell> find ./ -type f -exec sed -i 's/DB.php/MDB2.php/g' {} \;

Затем вы должны исправить исходный код, чтобы учесть некоторые различия между БД и MDB2:

shell> find ./ -type f -exec sed -i 's/$dbSocket->escapeSimple/$dbSocket->escape/g' {} \;
shell> find ./ -type f -exec sed -i 's/DB_FETCHMODE_ASSOC/MDB2_FETCHMODE_ASSOC/g' {} \;
shell> find ./ -type f -exec sed -i 's/$dbSocket->getOne/$dbSocket->queryOne/g' {} \;
shell> find ./ -type f -exec sed -i 's/$dbSocket->getCol/$dbSocket->queryCol/g' {} \;
shell> sed -i "s/MDB2::connect\x28\x24dbConnectString/MDB2::connect\x28\x24dbConnectString, array\x28\'result_buffering\' => true, \'portability\' => MDB2_PORTABILITY_ALL ^ MDB2_PORTABILITY_FIX_CASE\x29/g" library/opendb.php

Я проверил большинство функций и не знаю о каких-либо проблемах, хотя, возможно, я что-то пропустил, так как не использую функцию выставления счетов. В журнале я заметил некоторые предупреждения, относящиеся к часовому поясу, но в остальном он выглядит чисто.

Будьте очень осторожны с этими командами, они могут быть очень разрушительными, если они неправильно напечатаны / скопированы или запущены в неправильном каталоге.

Другие вопросы по тегам