如何安装PHP Oracle扩展,让PHP支持Oracle数据库

如何安装PHP Oracle扩展

作者的话:
最近用到Oracle数据库,但是网上到教程比较零碎且老旧,经过一天到摸索总结一个系统的安装流程
作者在macOS 及 ubuntu 16.04 下实验成功
本教程适用于 macOS 与大多数 Linux 操作系统,未详尽部分欢迎补充
转载注明出处

  • 安装 Oracle Instant Client
  • 安装 Oracle Instant Client SDK
  • 安装 PHP OCI8 扩展
  • 安装 PHP PDO_OCI 扩展

安装 Oracle Instant Client

Oracle官网下载对应版本的Instant Client Basic 基础套件。

套件下载完成后将其解压,即完成Oracle Instant Client 的安装。对安装位置没有具体要求。

教程中我们使用 /Users/splitter/instantclient 作为目录,其解压后内容如下:

├── BASIC_README
├── SQLPLUS_README
├── adrci
├── genezi
├── glogin.sql
├── libclntsh.dylib.11.1
├── libnnz11.dylib
├── libocci.dylib.11.1
├── libociei.dylib
├── libocijdbc11.dylib
├── libsqlplus.dylib
├── libsqlplusic.dylib
├── ojdbc5.jar
├── ojdbc6.jar
├── uidrvci
└── xstreams.jar

将Instant Client的路径加入环境变量,以便程序运行时能够找到他。你可以使用下列命令加入环境变量(如果你的系统支持),当然我更推荐大家使用文件进行配置,这也更便于管理。

例如:Linux系统中可以加在 ~/.profile 中以保证当前用户的调用,或加入/etc/profile 中以便所有用户调用

export ORACLE_HOME=/Users/splitter/instantclient
export LD_LIBRARY_PATH=/Users/splitter/instantclient:$LD_LIBRARY_PATH

安装 Oracle Instant Client SDK

Oracle官网下载对应版本的Instant Client SDK 套件

注意:SDK套件到版本需要与Basic套件保持一致

套件下载完成后将其解压至 Instant Client 的目录中,即完成Oracle Instant Client SDK的安装。

教程中路径为 /Users/splitter/instantclient,安装完成后其目录内容如下:

├── BASIC_README
├── SQLPLUS_README
├── adrci
├── genezi
├── glogin.sql
├── libclntsh.dylib.11.1
├── libnnz11.dylib
├── libocci.dylib.11.1
├── libociei.dylib
├── libocijdbc11.dylib
├── libsqlplus.dylib
├── libsqlplusic.dylib
├── ojdbc5.jar
├── ojdbc6.jar
├── sdk
│   ├── SDK_README
│   ├── demo
│   ├── include
│   ├── ott
│   └── ottclasses.zip
├── uidrvci
└── xstreams.jar

安装 PHP OCI8 扩展

使用 pecl 进行安装

如果在联网环境下,可以使用 pecl 工具进行安装。

# For PHP 7.x
pecl install oci8

# For PHP 5.2 - 5.6
pecl install oci8-2.0.12

# For PHP 4.3 - 5.1
pecl install oci8-1.4.10

使用 pecl 工具安装时,会出下如下提示要求你提供 ORACLE_HOME 的路径,如果你已把其加入环境变量了,那直接回车即可。若你没有使用环境变量,那么你需要提供Instant Client 的安装路径,教程中为:/Users/splitter/instantclient/

注意:在你的路径前你需要提供一个固定参数 instantclient ,两个参数以英文逗号分隔。

教程中需要输入:instantclient,/Users/splitter/instantclient/

Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] : instantclient,/Users/splitter/instantclient/

随后 pecl 会自动完成安装工作

手动安装

Pecl仓库中下载对应版本的扩展包

注意:

对于 PHP 7.x 版本你可以下载最新版本的扩展包

对于 PHP 5.2 - PHP 5.6 版本,你应该下载 2.0.12 版本

对于 PHP 4.3 - PHP 5.1 版本,你应该下载 1.4.10 版本

# 解压安装包
tar -xvf oci8-2.2.0.tgz

# 进入安装包目录
cd oci8-2.2.0/

# 生成安装配置文件
phpize

# 配置
# 如有需要,请提供你的 php-config 位置,使用 --with-php-config 参数
./configure --with-oci8=instantclient,/Users/splitter/instantclient

# 执行编译安装(可能需要root权限)
make && make install

安装完成后将 extension=oci8.so 添加至 php.ini 文件的最后一行,重启你的 Apache 服务或者php-fpm

检查安装是否成功 php -m | grep oci8

安装 PHP PDO_OCI 扩展

由于扩展的维护问题PHP 5.x 版本以后你已不能再通过pecl 直接安装扩展,所以这里仅介绍手动安装方法。

从你的PHP源码包中找到pdo_oci 扩展文件夹,通常路径 php-x.x.x/ext/pdo_oci

如果你没有源码包,请从官网下载你的PHP对应版本的源码(注意:千万不能使用pecl提供的扩展安装包)

# 进入安装包目录
cd pdo_oci/

# 生成安装配置文件
phpize

# 配置
# 如有需要,请提供你的 php-config 位置,使用 --with-php-config 参数
./configure --with-pdo-oci=instantclient,/Users/splitter/instantclient

# 执行编译安装(可能需要root权限)
make && make install

安装完成后将 extension=pdo_oci.so 添加至 php.ini 文件的最后一行,重启你的 Apache 服务或者php-fpm

检查安装是否成功 php -m | grep PDO_OCI

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页