linux — PHP odbc драйвер как общее расширение

Я использую php с версией 5.6.31 во встроенном проекте с yocto-linux в качестве операционной системы. То, что я хочу сделать, это иметь драйвер odbc в качестве разделяемой библиотеки вместо жесткой ссылки. Причина этого в том, что у меня есть 2 разных варианта использования с использованием PHP, один из которых требует custom-odbc-driver. Поскольку я строю его для встроенного домена из-за недостатка места, я не хочу добавлять его статически в бинарном PHP. Есть руководство для компилировать расширение php как общее.

Мой квест: можем ли мы иметь драйвер odbc в качестве общей библиотеки? Руководство упомянуло, что не всем, кроме немногих расширений можно поделиться. Я пытался собрать PHP с флагом конфигурации --with-custom-odbc=shared но это не удалось с фатальной ошибкой:

odbc.h: нет такого файла или каталога.

--with-custom-odbc пометить требуемый путь при установке odbc. Если у нас может быть драйвер odbc в качестве разделяемой библиотеки, какой флаг конфигурации следует использовать для его описания?

7

Решение

устанавливать unixODBC-devel:

$ sudo yum install unixODBC unixODBC-devel

$ sudo repoquery --installed -l unixODBC-devel
/usr/include/autotest.h
/usr/include/odbcinst.h
/usr/include/odbcinstext.h
/usr/include/sql.h
/usr/include/sqlext.h
/usr/include/sqltypes.h
/usr/include/sqlucode.h
/usr/include/unixodbc_conf.h
/usr/include/unixodbc_conf_x86_64.h
/usr/include/uodbc_extras.h
/usr/include/uodbc_stats.h

$ odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: ~/.odbc.ini

$ odbcinst -q -d
[PostgreSQL]
[MySQL]

и настроить PHP с вариантами:

./configure --with-unixODBC=shared,/usr

когда unixODBC не доступен как пакет, он может быть построен из исходный код:

$ wget http://www.unixodbc.org/unixODBC-2.3.7.tar.gz
$ tar -xvzf unixODBC-2.3.7.tar.gz
$ cd unixODBC-2.3.7
$ ./configure --help

$ ./configure
$ make
$ sudo make install

есть даже UnixODBC-гуй-кварта фронтэнд для него.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]