QDBM 和 GDBM 似乎是唯一允许 dba_replace 正确工作的 DBA 处理程序。DBA 处理程序必须编译或构建到您正在使用的版本中。有关更具体的信息,请参阅 dba_handlers (https://php.net/manual/en/function.dba-handlers.php)
此外,当您在线搜索时,您会看到提到与 dba_replace() 函数相关的“安全”问题。在在线记录的每个“安全”问题实例中,dba_open 函数都指定了“inifile”的 DBA 处理程序选项。DBA 处理程序“inifile”专门用于管理 ini 文件。以下是与此“安全”问题相关的 dba_open 和 dba_replace 代码片段
<?php
$source=dba_open("/www/about.ini", "wlt", "inifile");
dba_replace("HOME","/www/",$source);
?>
我还看到网上列出了与 DB4 和 dba_replace 函数使用的错误。虽然我对这些报告持怀疑态度。不幸的是,我没有一个编译了 DB4 处理程序的数据库来检查 dba_replace 和 DB4 DBA 处理程序是否存在问题。至少您知道可能存在问题,并且可以根据需要进行检查。
假设您正在使用的软件包在构建时正确地将 DBA 处理程序“构建”或编译到您的数据库中,那么 dba_replace() 和实际数据库文件可能没有问题。如果您遇到 dba_replace() 的问题,请确保构建了 DBA 处理程序 QDBM 或 GDBM。
您不能在同一构建中同时构建 QDBM 和 GDBM,但是您可能可以在 QDBM 或 GDBM 中同时构建 INIFILE 和 FLATFILE。目前尚不清楚您是否可以在 QDBM 或 GDBM 中同时构建 db3 或 db4。似乎 DB4、CDB、INIFILE 和 FLATFILE 通常一起构建。
请参阅与 CDB 相关的 dba_handlers() 和 dba_open() 的用户贡献的注释。