Я переношу существующий веб-сайт с Apache 2.2.4 на 32-разрядную версию Gentoo на Apache 2.2.27 на 64-разрядной версии CentOS. Этот конкретный сайт использует DBM для аутентификации с зашифрованными паролями.
В старой системе, если я наберу:
htdbm -l access.db
Я получаю список пользователей в файле.
В новой системе та же команда выводит:
Error opening database access.db
No such file or directory
Я проверил разрешения на access.db и попробовал запустить htdbm как root. Это должна быть ошибка формата.
Затем я обнаружил, что 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)
Что еще я могу сделать, чтобы узнать, почему не читается первый файл? Если это версия, как мне преобразовать файл в более новую версию?
Мое решение на данный момент - использовать
db_dump
на старом сервере и
db_load
на новом сервере.
Полагаю, я мог бы сделать все это на новом сервере, если бы получил старую версию библиотек BDB и скомпилировал их, используя
---with-dbm
флаг.
Однако в настоящее время, поскольку у меня есть рабочие версии в обоих местах, это самое быстрое решение для меня прямо сейчас.