Включение поддержки Firebird + PHP версии 7.2 и ниже на Linux

Обновлено Обновлено: Опубликовано Опубликовано:

Данные действия помогут установить модуль поддержки Firebird в PHP разных версий под управлением операционной системы Linux на примере Ubuntu и CentOS 7 или 8. Предполагается, что у нас уже установлен PHP.

Начиная с версии PHP 7.3, поддержка Firebird осуществляется только через PDO. Подробнее читайте в инструкции Работа с Firebird в PHP через PDO.

Рассмотрим процесс пошагово: 

Установка и подключение модуля

В зависимости от системы вводим разные команды.

а) Ubuntu:

apt-get install firebird-dev gcc wget php-dev make

б) CentOS

Подключаем расширенный репозиторий:

yum install epel-release

Устанавливаем необходимые пакеты:

yum install firebird-devel gcc wget php-devel make

---

* где:

  • firebird-devel(dev) — средства для разработчика Firebird.
  • gcc — набор компиляторов, понадобится для сборки php-дополнения;
  • wget — утилита для загрузки файлов, будем использовать для скачивания исходников php; 
  • php-devel(dev) — набор для разработчика php, содержит нужный нам phpize, с помощью которого будем компилировать расширение для php.
  • make — пакет для сбора приложения из исходников.

Смотрим установленную версию php:

php -v

Теперь открываем браузер и заходим на сайт http://museum.php.net. Выбираем установленную версию php (например, 5 или 7) и находим исходники той же версии, которая установлена у нас в системе CentOS и была получена предыдущей командой. Копируем ссылку на архив:

Копируем ссылку на исходники нужной версии php

Если мы используем актуальную версию PHP, найти ссылку на загрузку его исходника можно на странице www.php.net/releases/index.php.

Переходим во временный каталог:

cd /tmp

Используя скопированную ссылку, скачиваем исходник для php:

wget http://museum.php.net/php5/php-5.4.16.tar.gz

* у меня была установлена версия php-5.4.16.

Теперь распаковываем скачанный архив:

tar -xvf php-*.tar.gz

И переходим в следующий каталог:

cd php-*/ext/interbase/

* напомню, что 5.4.16 — моя версия установленной программы. В вашем случае это может быть 5.6..., 7.2... или любая другая версия.

Запускаем компиляцию расширения:

phpize

Добавляем опции в исходник:

./configure --with-interbase=shared,/opt/firebird

Запускаем сборку исходника:

make

Копируем файл модуля из исходника в рабочий каталог php:

cp modules/interbase.so /usr/lib64/php/modules/

Создаем новый конфигурационный файл для расширения:

vi /etc/php.d/interbase.ini

и добавляем в него такую строку:

extension=interbase.so

Проверяем, что поддержка interbase firebird появилась в PHP:

php -r "phpinfo();" | grep Firebird

Мы должны увидеть что-то на подобие:

Firebird/InterBase Support => dynamic
Compile-time Client Library Version => Firebird API version 25
Run-time Client Library Version => LI-V6.3.9.27139 Firebird 2.5

Перезагружаем интерпретатор PHP, например, Apache:

systemctl restart httpd

... или php-fpm:

systemctl restart php-fpm

Пример кода php

Соединяемся с базой:

ibase_connect("192.168.1.4:mybase", "SYSDBA", "masterkey") or die("IBase connect error");

* где 192.168.1.4 — IP-адрес сервера Firebird; mybase — имя базы данных, к которой идет подключение; SYSDBA и masterkey — соответственно, имя пользователя и пароль для подключения к базе данных.

Делаем запрос на выборку:

$result = ibase_query("SELECT * FROM users");

* в данном запросе предполагается, что мы обращаемся к таблице users. Результат запроса помещаем в переменную $result.

Перебираем массив полученных результатов:

while ($mass = ibase_fetch_object($result)) {
    print_r($mass);
}

Возможные ошибки

fatal error: ibase.h: No such file or directory 

Проблема может возникнуть при сборке модуля для php-7.2, когда мы выполняем команду make.

Причина

В каталоге с распакованным исходником нет нужного файла (ibase.h).

Решение

Находим в системе файл ibase.h командой:

find / -name "ibase.h"

В моем случае, файл был найден по пути:

/usr/include/firebird/ibase.h

Создаем симлинк на данный файл в каталоге с исходником:

ln -s /usr/include/firebird/ibase.h /tmp/php-*/ext/interbase/

* где /usr/include/firebird/ibase.h — путь, который был найден с помощью команды find; /tmp/php-*/ext/interbase/ — путь до распакованного исходника.

Читайте также

Другие инструкции, которые могут вас заинтересовать.

1. Установка Firebird на Linux CentOS 7

2. Примеры SQL-запросов в Firebird

# CentOS # Linux # UNIX # Базы данных # Серверы # Ubuntu
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет