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

使用Oracle Instant client 10.2.0.4使用PDO-OCI驱动程序编译PHP 5.4,php,pdo,oracle-call-interface,instantclient,Php,Pdo,Oracle Call Interface,Instantclient,我已从Mac OS X(英特尔x86)即时客户端下载中下载了即时客户端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 3416

我已从Mac OS X(英特尔x86)即时客户端下载中下载了即时客户端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

有人能帮我解决这个错误吗?

我们最近不得不在CentOS机箱上安装这个,所以路径可能会有点不同。此外,我们使用了一个预编译的PHP实例,并将OCI8函数作为一个单独的模块添加。在使用CentoOS之前,我们使用以下说明将其安装到Mac工作站上(它们有点过时,因此我不知道这是否仍适用于当前版本的OS X和PHP):

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

  • 安装/编译PHP5.4,无需即时客户端支持

  • 获取instantClient basic和SDK包并安装它们(看起来您已经拥有了这两个包)

  • 当OCI configure scirpt声称它太笨而找不到标题时,这并不是讽刺,所以你必须建立一个老鼠窝的符号链接。在CentOS上,基本客户端安装在/usr/lib/oracle/10.2.0.3/client64中,SDK文件安装在/usr/include/oracle/10.2.0.3/client64/中

  • 现在您可以从pecl安装OCI8。请注意,此时PDO_OCI将不起作用。这仅适用于OCI8驱动程序:
pecl安装oci8

  • 对于PDO_OCI支持,您还需要添加更多符号链接:
  • PDO OCI已经好几年没有维护了,所以它不会直接从pecl安装。相反,您必须下载它并进行一些更改。sed命令将function_条目更新为zend_function_条目,以便正确编译:

此时,PDO_OCI应该与您的PHP安装一起使用。如果您仍然有问题,可以查看配置和制作SCIRPT,查看系统需要哪些目录和符号链接。布拉德说这件事花了好几天的时间才弄清楚,他是在直言不讳地说。希望它能帮助您更快地工作。

我们最近不得不将其安装在CentOS机箱上,因此路径可能会有所不同。此外,我们使用了一个预编译的PHP实例,并将OCI8函数作为一个单独的模块添加。在使用CentoOS之前,我们使用以下说明将其安装到Mac工作站上(它们有点过时,因此我不知道这是否仍适用于当前版本的OS X和PHP):

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

  • 安装/编译PHP5.4,无需即时客户端支持

  • 获取instantClient basic和SDK包并安装它们(看起来您已经拥有了这两个包)

  • 当OCI configure scirpt声称它太笨而找不到标题时,这并不是讽刺,所以你必须建立一个老鼠窝的符号链接。在CentOS上,基本客户端安装在/usr/lib/oracle/10.2.0.3/client64中,SDK文件安装在/usr/include/oracle/10.2.0.3/client64/中

  • 现在您可以从pecl安装OCI8。请注意,此时PDO_OCI将不起作用。这仅适用于OCI8驱动程序:
pecl安装oci8

  • 对于PDO_OCI支持,您还需要添加更多符号链接:
  • PDO OCI已经好几年没有维护了,所以它不会直接从pecl安装。相反,您必须下载它并进行一些更改。sed命令将function_条目更新为zend_function_条目,以便正确编译:

此时,PDO_OCI应该与您的PHP安装一起使用。如果您仍然有问题,可以查看配置和制作SCIRPT,查看系统需要哪些目录和符号链接。布拉德说这件事花了好几天的时间才弄清楚,他是在直言不讳地说。希望它能帮助您更快地工作。

我已经能够通过以下更改安装PDO_OCI模块(可能不是最完美的解决方案,但已使其工作起来)

i) 通过查看配置脚本,在特定文件夹结构中安装InstantClient和SDK模块 /usr/lib/oracle//client/ 您还可以在usr/include.下将instantclient提取到类似的结构中

ii)修改config.m4脚本,用zend_函数_条目替换函数_条目

iii)将所有头文件放在oracle主目录的include dir中

iv)为*.dylib创建符号链接。模块到*.dylib 例如:ln-s libclntsh.dylib.10.1到libclntsh.dylib 请注意,库文件中的版本应与要创建的文件夹相同


所有这些都是通过查看PDO_OCI extract的config.m4脚本发现的,我已经能够通过以下更改安装PDO_OCI模块(可能不是最完美的解决方案,但它已经工作了)

i) 通过查看配置脚本,在特定文件夹结构中安装InstantClient和SDK模块 /usr/lib/oracle//client/ 您还可以在usr/include.下将instantclient提取到类似的结构中

ii)修改config.m4脚本,用zend_函数_条目替换函数_条目

iii)将所有头文件放在oracle主目录的include dir中

iv)为*.dylib创建符号链接。模块到*.dylib 例如:ln-s libclntsh.dylib.10.1到libclntsh.dylib 请注意,库文件中的版本应与要创建的文件夹相同


所有这些都是通过查看PDO_OCI extract的config.m4脚本发现的,可能这只是一个autoconf问题。我从源代码编译了最后一个,并且工作得非常完美。我创建只是为了解释正确的程序

也许这只是一个自动确认问题。我从sou编译了最后一个
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
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
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