Назад | Перейти на главную страницу

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

Я запускаю Centos 7, FreeRADIUS 3.0.4, PHP 5.4.16, httpd Apache / 2.4.6.

Я могу войти в экран входа в систему Daloradius и затем получить ERROR 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

«server» - это просто заполнитель для нашего настоящего FQDN.

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

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

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

Да, DB устарела - хотя я считаю, что они все еще делают исправления безопасности для поддержки устаревших установок ... даже MDB2 кажется ненужным в наши дни с учетом встроенных функций php. Но, поскольку я не хотел переписывать весь DAL, я решил, что MDB2, вероятно, был путем наименьшего сопротивления. Это то, что потребовалось для миграции DB => 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' {} \;

Затем вам нужно исправить исходный код, чтобы учесть некоторые различия между DB и 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

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

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

У меня была аналогичная ошибка, centos 7, daloradius-0.9-9. Я сделал следующий

yum install php-pear php-pear-DB

Теперь все в порядке