QDBM 和 GDBM 看起來是唯一能讓 dba_replace 正確運作的 DBA 處理器。DBA 處理器必須編譯或建置到您正在使用的版本中。請參閱 dba_handlers (https://php.dev.org.tw/manual/en/function.dba-handlers.php) 以取得更詳細的資訊
此外,當您在網路上搜尋時,您會看到提及與 dba_replace() 函式相關的「安全性」問題。在網路上記錄的每一個「安全性」問題中,dba_open 函式都指定了「inifile」的 DBA 處理器選項。「inifile」DBA 處理器專門用於管理 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() 提供的註解。