我已从 Mac OS X (Intel x86) 的 Instant Client 下载中下载了 Instant client 10.2.0.4 基本版和 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目录中
当我尝试使用命令配置为...
./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):http://articles.serenity.de/compiling_php_with_oracle/
对于 CentOS 安装,我们必须执行以下操作:
安装/编译 PHP 5.4,无需即时客户端支持。
获取 instantClient 基本包和 SDK 包并安装它们(看起来您已经拥有这两个包)。
当 OCI 配置脚本声称它太笨而无法找到 header 时,这并不是讽刺,所以你必须设置一个符号链接(symbolic link)的老鼠巢。在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,您还需要添加更多符号链接(symbolic link):
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 安装配合使用。如果您仍然遇到问题,您可以查看配置并创建脚本来查看您的系统需要哪些目录和符号链接(symbolic link)。当布拉德说这需要几天时间才能弄清楚时,他是按字面意思说的。希望它能帮助您更快地工作。
关于使用 Oracle Instant 客户端 10.2.0.4 使用 PDO-OCI 驱动程序编译 PHP 5.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20342562/