Включение поддержки 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, найти ссылку на загрузку его исходника можно на странице 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/ — путь до распакованного исходника.
Читайте также
Другие инструкции, которые могут вас заинтересовать.