PHP扩展Oci8安装


Oci8扩展支持 SQL 和 PL/SQL 语句。 基本功能包括对事务控制、PHP 变量与 Oracle 占位符的绑定以及大对象(LOB)类型和集合的支持。 还支持 Oracle 的可伸缩性特性,例如数据库驻留连接池(DRCP)和结果缓存。

【Oracle下载地址】

    https://www.oracle.com/database/technologies/instant-client/downloads.html


【获取链接】

在pecl上查看需要安装的扩展链接

    1)下载

wget https://pecl.php.net/get/oci8-3.2.1.tgz

    2)解压缩

tar -zxvf oci8-3.2.1.tgz

    3)进入目录

cd oci8-3.2.1/

    4)建立php的外挂模块

/usr/local/php/bin/phpize

    5)生成Makefile

./configure --with-php-config=/usr/local/php/bin/php-config

    6)编译安装

make && make install


【可能出现的错误】

一、未安装Oracle,详见上面的地址下载安装

configure: WARNING: OCI8 extension: ORACLE_HOME is not set, looking for default Oracle Instant Client instead
checking Oracle Instant Client directory... configure: error: Oracle Instant Client directory /usr/lib/oracle/.../client64/lib libraries not found. Try --with-oci8=instantclient,DIR

 二、PHP 是在启用 DTrace 动态跟踪的情况下编译的

oci8_dtrace_gen.h: No such file or directory

需要设置此环境变量后重新运行 configure 和 make 命令:

export PHP_DTRACE=yes

  设置此环境变量后重新运行 configure 和 make 命令:


【再次生成Makefile】

./configure -with-oci8=shared,instantclient,/path/to/instant/client/lib

    1)编译安装

make && make install

    2)编译成功


【添加扩展】

vim /usr/local/php/etc/php.ini

在文件中移除extension=oci8前面的分号即可,然后重启PHP服务后就完了添加。


【Windows环境使用】

    oci8扩展的安装不是你想的从PECL上下载了对应版本的dll文件,放到ext文件夹中,然后在PHP.ini文件中去掉了extension=oci8前面的分号,然后执行程序就可以了,还需要去掉extension=intl前面的分号,PHP intl 是国际化扩展,是ICU 库的一个包装器。

    phpinfo里也看不到oci8的扩展信息,执行程序你会得到一个错误信息:

PHP Warning:  PHP Startup: Unable to load dynamic library 'oci8_12c' (tried: ext\oci8_12c (找不到指定的模块。), ext\php_oci8_12c.dll (找不到指定的模块。)) in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library 'oci8_12c' (tried: ext\oci8_12c (找不到指定的模块。), ext\php_oci8_12c.dll (找不到指定的模块。)) in Unknown on line 0

    这是机器上没有安装Oracle客户端,PHP的动态链接库无法调用Oracle的动态链接库链接数据库造成的。我们进入Oracle下载地址,选择对应的客户端版本,下载后将压缩包解压到任意分区中即可。

    因为我不需要使用客户端,所有就下载了Basic Light Package版本。然后解压到了 D:\instantclient 将要文件夹里的oci.dll、oraons.dll、oraociicus19.dll复制到PHP的根目录中就可以了(不同PHP版本文件不同,你也可以吧所有的dll文件都复制过去),对不用配置环境变量,不用复制到Windows系统文件夹,只需要放到PHP程序的根目录就可以了,就这么简单。

    然后重启PHP服务,在phpini里看一下oic8的扩展也正常加载出来。再试一下现程序,已经可以读取到数据库了。

上一篇 下一篇

评论

登录后可发表评论