Естественно ни о каком сне больше не шло речи. Возможно это случилось к лучшему, потому что я заодно решил установить более новую версию Berkeley DB XML (читается BArK-lee). Всю ночь я изучал документацию и форумы, а поскольку я не системный администратор, то давалось это крайне тяжело. К великому счастью ко второй половине следующего дня мне удалось все настроить!
1. Делаем билд dbxml
скачиваем последнюю версию Berkeley DB XML 2.3.10
wget http://download-uk.oracle.com/berkeley-db/dbxml-2.3.10.tar.gz
распаковываем
tar -xzvf dbxml-2.3.10.tar.gz
переходим в папочку (в моем случае это /root/dbxml-2.3.10)
cd dbxml-2.3.10
делаем полный билд dbxml (собирается эта сволочь около получаса)
./buildall.sh
2. Устанавливаем PHP API
cd dbxml/src/php
запускаем утилиту phpize (должна входить в девел пакет PHP, для меня эта сука была непреодолимым препятствием в начале года, когда я только разрабатывал "овцу" и из-за неё не мог поставить самостоятельно базу)
phpize
./configure --with-dbxml=/root/dbxml-2.3.10/install --with-berkeleydb=/root/dbxml-2.3.10/install --with-xerces=/root/dbxml-2.3.10/install --with-pathan=/root/dbxml-2.3.10/install --with-xquery=/root/dbxml-2.3.10/install
make
./configure --with-dbxml=/root/dbxml-2.3.10/install --with-berkeleydb=/root/dbxml-2.3.10/install --with-xerces=/root/dbxml-2.3.10/install --with-pathan=/root/dbxml-2.3.10/install --with-xquery=/root/dbxml-2.3.10/install
make
У меня выдалась следующая ошибка:
Error: In file included from /root/dbxml-2.3.10/dbxml/src/php/php_dbxml.cpp:10:
/root/dbxml-2.3.10/dbxml/src/php/php_dbxml_int.hpp:18:29: ext/db4/php_db4.h: No such file or directory
На форуме Oracle я нашел простое решение - мы просто создаем символическую ссылку (ярлык) на требуемую директорию:
mkdir ext
cd ext
ln -s /root/dbxml-2.3.10/db-4.5.20/php_db4 db4
cd ../
cd ext
ln -s /root/dbxml-2.3.10/db-4.5.20/php_db4 db4
cd ../
возвращаемся и повторяем все с начала
./configure [...]
make
make install
make
make install
Результат:
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20060613/
3. Ставим расширение php_db4
cd /root/dbxml-2.3.10/db-4.5.20/php_db4
phpize
./configure --with-db4=/root/dbxml-2.3.10/install
phpize
./configure --with-db4=/root/dbxml-2.3.10/install
собираем
make
Результат:
#Build complete.
ls modules
#db4.la db4.so
make install
Результат:
#Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20060613/
#Installing php_db4 headers: /usr/local/include/php/ext/db4/
я полагаю, что db4.so, dbxml.so можно скопировать из
/usr/local/lib/php/extensions/no-debug-non-zts-20060613/ в /usr/local/lib/php/extensions или другую папку, где находятся все расширения PHP.
4. Подцепляем к PHP
в php.ini добавляем строки в соответствующем разделе:
extension=db4.so
extension=dbxml.so
extension=dbxml.so
убеждаемся, что добавляем их в правильный файл. путь к нему, а также extension_dir указан в phpinfo. убеждаемся, что модули находятся в extension_dir
перегружаем апач
service httpd restart
видим заветные строки в phpinfo():
db4 support enabled
dbxml support enabled
dbxml version Oracle: Berkeley DB XML 2.3.10: (January 30, 2007)
Ура, блять, работает

Установка Berkeley DB XML для PHP на Linux