使用Oracle Instant Client 10.2.0.4使用PDO-OCI驱动程序进行PHP 5.4编译

 lingdong369 发布于 2023-02-13 12:22

我从Mac OS X(Intel x86)的Instant Client下载中下载了Instant Client 10.2.0.4 basic和sdk zip文件,

我提取到一个文件夹,如下所示

-rw-r--r--@ 1 MNV_Kishore  1000     278 Apr  1  2009 BASIC_README
-r--r--r--@ 1 MNV_Kishore  1000 1609607 Feb  2  2008 classes12.jar
-rwxr-xr-x@ 1 MNV_Kishore  1000     34168 Apr  1  2009 genezi
lrwxr-xr-x  1 MNV_Kishore  wheel        20 Dec  2 18:10 libclntsh.dylib -> libclntsh.dylib.10.1

-rwxr-xr-x@ 1 MNV_Kishore  1000   25582048 Mar 31  2009 libclntsh.dylib.10.1
-rwxr-xr-x@ 1 MNV_Kishore  1000 2062528 Mar  3  2009 libnnz10.dylib
lrwxr-xr-x  1 MNV_Kishore  wheel        18 Dec  2 18:10 libocci.dylib -> libocci.dylib.10.1
-rwxr-xr-x@ 1 MNV_Kishore  1000 1277896 Mar  3  2009 libocci.dylib.10.1

-rwxr-xr-x@ 1 MNV_Kishore  1000   72626768 Apr  1  2009 libociei.dylib
-rwxr-xr-x@ 1 MNV_Kishore  1000     118672 Mar 25  2009 libocijdbc10.dylib
-rwxr-xr-x@ 1 MNV_Kishore  1000     118672 Mar 25  2009 libocijdbc10.jnilib
-r--r--r--@ 1 MNV_Kishore  1000 1555682 Feb  2  2008 ojdbc14.jar
drwxr-xr-x@ 7 MNV_Kishore  wheel    238 Apr  1  2009 sdk

所有头文件.h都存在于sdk下的include dir中

当我尝试使用命令配置为...

./configure --with-pdo-oci=instantclient,/usr/local/instantclient_10_2,10.2.0.4

...遇到以下错误

checking for oci.h... configure: error: I'm too dumb to figure out where the include dir is in your instant client install

任何人都可以帮我解决这个错误吗?

1 个回答
  • 我们最近不得不在CentOS盒子上安装它,所以路径可能会有所不同.此外,我们使用了预编译的PHP实例,并将OCI8函数添加为单独的模块.在使用CentoOS之前,我们使用这些说明安装到我们的Mac工作站(它们有点过时,所以我不知道这是否仍适用于当前版本的OS X和PHP):http://articles.serenity.de/compiling_php_with_oracle /

    对于我们的CentOS安装,我们必须执行以下操作:

    安装/编译PHP 5.4,无需即时客户端支持.

    获取instantClient基本和SDK包并安装它们(看起来你已经拥有它们).

    当OCI配置scirpt声称它太愚蠢而无法找到标题时,它不是讽刺,所以你要设置一个鼠标的符号链接嵌套.在CentOS上,基本客户端安装在/usr/lib/oracle/10.2.0.3/client64中,SDK文件位于/usr/include/oracle/10.2.0.3/client64/中.

    cd /usr/lib/oracle/10.2.0.3/client64
    cp /usr/include/oracle/10.2.0.3/client64/* .
    ln -s lib/libnnz10.so libnnz.so
    ln -s lib/libclntsh.so.10.1 libclntsh.so
    ln -s lib/libnnz10.so libnnz10.so
    ln -s lib/libclntsh.so.10.1 libclntsh.so.10.1
    

    现在您可以从pecl安装OCI8.请注意,此时PDO_OCI将无法工作.这仅适用于OCI8驱动程序:

    pecl install oci8

    对于PDO_OCI支持,您还需要添加一些符号链接:

    cd /usr/lib/oracle/10.2.0.3/client64
    mkdir sdk
    cd sdk && ln -s /usr/include/oracle/10.2.0.3/client64 include
    ln -s /usr/lib/oracle/10.2.0.3/client64/sdk/include/ /usr/lib/oracle/10.2.0.3/client/include
    ln -s /usr/lib/oracle/10.2.0.3/client64/ /usr/lib/oracle/10.2.0.3/client
    ln -s /usr/include/oracle/10.2.0.3/client64/ /usr/include/oracle/10.2.0.3/client
    

    PDO OCI已经维护了几年,所以它不会直接从pecl安装.相反,您必须下载并进行一些更改.sed命令将function_entry更新为zend_function_entry,以便它可以正确编译:

    pecl download pdo_oci
    tar -xvf PDO_OCI-1.0.tgz
    cd PDO_OCI-1.0
    sed -i -e 's/function_entry pdo_oci_functions/zend_function_entry pdo_oci_functions/' pdo_oci.c
    mkdir include
    ln -s /usr/include/php include/php
    phpize
    cp /usr/include/oracle/10.2.0.3/client64/* ./include
    ./configure --with-pdo-oci=instantclient,/usr,10.2.0.3
    make && make install
    

    此时PDO_OCI应该与您的PHP安装一起使用.如果您仍然遇到问题,可以查看配置并制作scirpts,以查看系统需要哪些dircotories和符号链接.当布拉德说这需要花费数天才能弄清楚时,他正在说话.希望它能帮助您更快地完成工作.

    2023-02-13 12:25 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有