Daloradius - 未找到类“DB”,但“pear/DB”已被弃用

Daloradius - 未找到类“DB”,但“pear/DB”已被弃用

我运行 Centos 7、FreeRADIUS 3.0.4、PHP 5.4.16、httpd Apache/2.4.6。

我可以登录 Daloradius 登录屏幕,然后在浏览器的 ../dalo​​radius/dologin.php 页面上收到 ERROR 500。

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

“服务器”只是我们真正的 FQDN 的占位符。

我读到修复方法是安装 Pear DB,但是它已被弃用,所以我安装了 MDB2 及其 MySQLi 驱动程序。

请协助解决,我非常对这个系统来说是新的。

答案1

是的,daloRADIUS 尚未得到维护。任何属于您安全基础设施的部分都需要持续关注。如果您想要依赖一个表面上已经死亡的软件包,您真的需要认真考虑。如果您不是程序员,并且无法 100% 维护您自己的代码库分支,那么我绝对不会建议您考虑将它用于任何关键任务。

是的,DB 已被弃用 - 尽管我相信他们仍在对其进行安全修补以支持旧版安装... 考虑到如今原生 php 功能,甚至 MDB2 似乎也没有必要。但是,由于我不想重写整个 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

我已经测试了大部分功能,没有发现任何问题,不过我可能错过了一些东西,因为我不使用计费功能。我注意到日志中有一些与时区相关的预先存在的警告,但除此之外,它看起来很干净。

使用这些命令时要非常小心,如果输入/复制不正确或者在错误的目录中运行,它们可能会造成很大的破坏。

答案2

我遇到了类似的错误,centos 7,daloradius-0.9-9。我做了以下操作

yum install php-pear php-pear-DB

现在一切都好

相关内容