PHP odbc 驱动程序作为共享扩展

标签 php linux build odbc yocto

我在以 yocto-linux 作为操作系统的嵌入式项目中使用版本为 5.6.31 的 php。我想要做的是将 odbc 驱动程序作为共享库而不是硬链接(hard link)。这样做的原因是我有 2 个不同的使用 PHP 的用例,其中一个需要 custom-odbc-driver。由于空间问题,我正在为嵌入式域构建它,所以我不想将它静态添加到 PHP 二进制文件中。有指南可用compile php extension as shared .

我的问题是我们可以将 odbc 驱动程序作为共享库吗?指南提到,除了少数扩展名外,并非所有扩展名都可以共享。我尝试使用配置标志 --with-custom-odbc=shared 构建 PHP,但它因 fatal error 而失败:

odbc.h : No such file or directory .

--with-custom-odbc 标记 odbc 安装所需的路径。如果我们可以将 odbc 驱动程序作为共享库,那么应该使用哪个配置标志来描述它?

最佳答案

首先安装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]

然后使用--with-unixODBC配置PHP:

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

unixODBC 不能作为包使用时,它也可以从 source code 构建:

$ 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

它甚至还有一个 Qt 前端:unixodbc-gui-qt .

关于PHP odbc 驱动程序作为共享扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53774481/

相关文章:

php - 出现任何错误时停止并返回 Json 响应

javascript - 使用 PHP 和 AJAX 发送电子邮件表单

linux - 迭代多行 block 中的 grep 输出

linux - 如何删除正在连续写入的文件的旧内容?

build - TeamCity 中的快照依赖项和完成的构建触发器之间有什么区别?

php - 如何将查询结果从多列转换为两列?

php - Paypal PHP SDK Credications and Authentication,我无法让它工作

linux - create/dev/fakeDevice 支持读、写和ioctl

maven - 构建依赖项时如何使 Jenkins 触发依赖项目的构建

android - 使用没有 jni 文件夹的 ndk-build 构建 android 共享库