我正在将现有网站从 Gentoo 32 位上的 Apache 2.2.4 迁移到 CentOS 64 位上的 Apache 2.2.27。此特定网站使用 DBM 进行身份验证,并使用加密密码。
在旧系统上如果我输入:
htdbm -l access.db
我获得了文件中的用户列表。
在新系统上,相同的命令输出:
Error opening database access.db
No such file or directory
我检查了 access.db 的权限,并尝试以 root 身份运行 htdbm。这肯定是格式错误。
然后,我发现 Apache 尚未使用 --with-berkeley-db 进行编译,因此我启用了它并重新编译了 Apache。
但现在的结果是:
Dumping records from database -- access.db
Username Comment
Total #records : 0
我知道这个特定文件包含 68 条记录。
有趣的是,该文件被报告为:
access.db: Berkeley DB (Hash, version 7, native byte-order)
而我发现另一个可以在该系统上运行的 BDB 文件,它显示:
restricted.db: Berkeley DB (Hash, version 8, native byte-order)
我还能做些什么来找出第一个文件无法读取的原因?如果是版本问题,我该如何将文件转换为较新的版本?
答案1
我目前的解决方案是使用
db_dump
在旧服务器上,
db_load
在新服务器上。
我想我可以在新服务器上完成这一切,如果我有一个旧版本的 BDB 库,并使用
---with-dbm
旗帜。
然而,由于目前我在两个地方都有可用的版本,所以这对我来说是目前最快的解决方案。