Вдогонку к "Настройка доступа к Microsoft SQL Server через ODBC. Ubuntu 12.04" решил описать связку Linux->Firebird/InterBase.
Устанавливаем драйвер:
Установка необходимых пакетов:
$sudo apt-get install unixodbc unixodbc-bin unixodbc-dev odbcinst firebird2.5-super libfbclient2
Создаем необходимый симилинк:
#Для i386
$sudo ln -s /usr/lib/libfbclient.so.2 /usr/lib/libfbclient.so
#Для x86_64
$sudo ln -s /usr/lib/x86_64-linux-gnu/libfbclient.so.2 /usr/lib/x86_64-linux-gnu/libfbclient.so
На момент написания статьи последней версией драйвера была 2.0.1.152.
Последнюю версию на текущий момент см. тут
Качаем драйвер и копируем его куда следует:
#Для i386
$wget http://sourceforge.net/projects/firebird/files/firebird-ODBC-driver/2.0.1-Release/OdbcFb-LIB-2.0.1.152.i686.gz $tar zxvf OdbcFb-LIB-2.0.1.152.i686.gz $sudo cp -f libOdbcFb.so /usr/lib/odbc/ $sudo chmod +x /usr/lib/odbc/libOdbcFb.so
#Для x86_64
Для 64-битной системы драйвер оказался недоработанным (косяки работы с датой и "съедались" некоторые буквы у char`в). Пришлось собирать из svn свой.
$wget https://dl.dropbox.com/u/61986139/libOdbcFb.so.tar.gz $tar zxvf libOdbcFb.so.tar.gz $sudo cp -f libOdbcFb.so /usr/lib/x86_64-linux-gnu/odbc/ $sudo chmod +x /usr/lib/x86_64-linux-gnu/odbc/libOdbcFb.so
Собсна, переходим к конфигурированию...
Настраиваем драйвер:
$sudo mcedit /etc/odbcinst.ini
и добавляем секцию для Firebird/InterBase:
#Для i386
[Firebird] Description = Firebird/InterBase(r) driver Driver = /usr/lib/odbc/libOdbcFb.so Setup = /usr/lib/odbc/libOdbcFb.so FileUsage = 1 UsageCount = 4
#Для x86_64
[Firebird] Description = Firebird/InterBase(r) driver Driver = /usr/lib/x86_64-linux-gnu/odbc/libOdbcFb.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libOdbcFb.so FileUsage = 1 UsageCount = 4
Настраиваем непосредственно систему ODBC. Создаем DSN.
Сделать это можно 2-мя способами:
1. Через GUI:
Используя мастер настройки:
$ODBCCreateDataSourceQ4
Используя ODBC администратор:
$ODBCManageDataSourcesQ4
2. Путем редактированию конфигов:
$sudo mcedit /etc/odbc.ini
Добавляем в него соответствующую секцию:
#Для i386
[MixPos] Description = Firebird/InterBase(r) driver Driver = Firebird #Если сервер Выньдовый, то путь к БД пишется в таком формате #Dbname = 192.168.10.41:d:\mixpos\data\mixdata.fdb #Если сервер на Linux, то путь к БД пишется в таком формате Dbname = 192.168.10.1:/mnt/base/mixpos/mixdata.fdb User = SYSDBA Password = masterkey Role = CharacterSet = WIN1251 ReadOnly = No NoWait = No Dialect = 3 QuotedIdentifier = Yes SensitiveIdentifier = No AutoQuotedIdentifier = No
#Для x86_64
[MixPos] Description = Firebird/InterBase(r) driver Driver = Firebird #Если сервер Выньдовый, то путь к БД пишется в таком формате #Dbname = 192.168.10.41:d:\mixpos\data\mixdata.fdb #Если сервер на Linux, то путь к БД пишется в таком формате Dbname = 192.168.10.1:/mnt/base/mixpos/mixdata.fdb User = SYSDBA Password = masterkey Role = CharacterSet = WIN1251 ReadOnly = No NoWait = No Dialect = 3 QuotedIdentifier = Yes SensitiveIdentifier = No AutoQuotedIdentifier = No
где:
Description - описание драйвера.
Driver - имя раздела из файла /etc/odbcinst.ini.
Dbname - путь к базе данных на Firebird/InterBase сервере, к которой нужно получить доступ.
User и Password - пользователь, грантованный на работу с данной БД.
Role - роль, с которой осуществляется подключение к БД.
CharacterSet - кодировка БД.
Конфигурирование завершено...
Устанавливаем параметры драйвера в систему:
$sudo odbcinst -i -d -f /etc/odbcinst.ini
Устанавливаем настройки ODBC в систему:
$sudo odbcinst -i -s -l -f /etc/odbc.ini
!!!!ВАЖНО!!!!
Если в /etc/odbc.ini вносятся какие-либо изменения, процедуру установки ностроек ODBC в систему, необходимо повторить (sudo odbcinst -i -s -l -f /etc/odbc.ini)
Проверка установленных DSN:
$odbcinst -s -q
Проверка подключения к БД:
$isql MixPos
видим что то типа:
+---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL>
Чтобы удалить параметры драйвера из системы:
$sudo odbcinst -u -d -n Firebird
Чтобы удалить регистрацию DSN из системы:
$sudo odbcinst -u -s -l -n MixPos
Во избежание конфликтов, лучше удалить локальный настройки ODBC:
$rm /home/name/.odbc.ini
Все, можно работать.
После sudo apt-get install unixodbc unixodbc-bin unixodbc-dev odbcinst firebird2.5-super libfbclient2
ОтветитьУдалитьфайл libfbclient.so отсутствует.
Поэтому шаг
>>Создаем необходимый симилинк:
>>#Для i386
>>$sudo ln -s /usr/lib/libfbclient.so.2 /usr/lib/libfbclient.so
выолнить затруднительно
Библиотеки "/usr/lib/libfbclient.so" и не должно по-умолчанию быть. Для этого и создается симилинк
Удалитьчто говорит:
Удалить$ls -la /usr/lib | grep libfbclient
На последнем этапе выполняю команду $isql MixPos
УдалитьИ никакой реакции, просто висит.
вот проверка ссылок
# ls -la /usr/lib | grep libfbclient
lrwxrwxrwx 1 root root 25 февр. 26 11:58 libfbclient -> /usr/lib/libfbclient.so.2
lrwxrwxrwx 1 root root 25 февр. 25 15:30 libgds.so -> /usr/lib/libfbclient.so.2
при выполнении
$php -i | grep PDO
PDO
PDO support => enabled
PDO drivers => mysql, odbc
PDO Driver for MySQL => enabled
PDO_ODBC
PDO Driver for ODBC (unixODBC) => enabled
Подскажите в каком направлении копать?
$isql MixPos я просто не дождался )) подключение прошло. Но другая проблема осталась.К php прикрутить видимо не удалось, т.к. сайт, использующий подключение к базе файербёрда выдаёт ошибку failed to open the DB connection: could not find driver. Не подскажите как к php прикрутить драйвер?
Удалитькак подключаетесь из php?
Удалитьhttp://www.php.net/manual/ru/ref.pdo-firebird.php - пробовали?
этот способ подразумевает сборку из исходников, но не умею этого делать к сожалению.
УдалитьПытался подключится по вот такому методу: http://www.firebirdfaq.org/faq234/ но ошибка php5enmod команда не найдена.
Здравствуйте! Могли бы Вы настроить firebird драйвер для работы с php на ubuntu server? за умеренную оплату разумеется. Моя почта o.starigin@gmail.com
ОтветитьУдалить