PHP + Iterbase(Firebird)
Недавно пришлось столкнуться с интересной проблемой.
В PHP проекте используется база данных с расширением *.gdb
Экспериментальным путем установил, что это Iterbase(Firebird) база и для того, чтобы подружить PHP и Interbase, необходимо включить поддержку модуля php_interbase.
Я использую wamp webserver win32 для работы с PHP. И поначалу думал, что проблем не возникнет. Но я ошибался и они появились буквально сразу 🙂
В общей сложности я убил на решение проблемы пару дней. Перерыл кучу источников в интернетах, и шаг за шагом, заручившись поддержкой более опытного в PHP товарища, я сделал это: подключил расширение php_interbase для PHP.
Ниже несколько пунктов, обязательных для осуществления этого танца с бубном:
1. Идем в используемый php.ini
phpinfo() вам в помощь. У меня это Loaded Configuration File %путь к web-серверу%\bin\apache\apache2.2.22\bin\php.ini
2. Ищем “extension_dir = “%путь к web-серверу%/bin/php/php5.4.3/ext”
Обратите внимание на закрывающий “/” . Его стоит убрать
3. Ищем блок “Dynamic Extensions” и убираем “;” перед “extension=php_interbase.dll”
4. Качаем и устанавливаем Firebird
Я скачал Firebird-2.5.2.26540_0_Win32.exe
5. Из папки с установленным Firebird копируем библиотеку fbclient.dll в папку Apache %путь к web-серверу%\bin\apache\apache2.2.22\bin\
6. Делаем рестарт всех сервисов wamp.
Готово! Поздравляю, всё должно работать. Можно проверить так:
// List of loaded extensions
var_dump(get_loaded_extensions());
//
$host = "localhost:%path to db.gdb%";
$username = "sysdba";
$password = "masterkey";
if (extension_loaded("interbase"))
echo "[+] php_interbase extension loaded ";
else die ("[-] php_interbase extension NOT loaded") ;
if ($dbh = ibase_connect($host, $username, $password))
echo "[+] Connected";
else
echo' [-] Connection error: ' . ibase_errmsg();
?>