环境
Centos7
PHP7
Oracle 11g
- 先下载对应的oracle客户端工具 https://www.oracle.com/database/technologies/instant-client/downloads.html.
主要包含三个:
instantclient-basic-linux.x64-11.2.0.4.0.zip
instantclient-sdk-linux.x64-11.2.0.4.0.zip
instantclient-sqlplus-linux.x64-11.2.0.4.0.zip - 解压对应的包, 得到 instantclient_11_2 文件夹
- 将instantclient_11_2整体移动到自己喜欢的目录 比如 /usr/local/instantclient_11_2
- 在instantclient_11_2 下面编辑tnsnames.ora配置文件. 具体的IP地址HOST,端口号PORT,实例名称SERVICE_NAME需要和DBA确认.
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.7)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)
- 测试. 在用户目录下创建ora.sh
#!/bin/bash
export ORA_INSTANCE=/usr/local/instantclient_11_2
export TNS_ADMIN=$ORA_INSTANCE
export LD_LIBRARY_PATH=$ORA_INSTANCE
export SQLPATH=$ORA_INSTANCE
${ORA_INSTANCE}/sqlplus user/pass@orcl
- 修改权限并执行,看到连接成功即可
chmod a+x ./ora.sh
./ora.sh
- 下载rpm包并安装
oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
- 编译PHP的 oci8 和 pdo_oci扩展.前提是已经有PHP对应版本的源代码了.
yum install autoconf -y
cd /usr/local/src/php-7.4.20/ext/oci8/
phpize
./configure --with-php-config=/usr/local/php74/bin/php-config --with-oci8=instantclient,/usr/lib/oracle/11.2/client64/lib
make
make install
cd /usr/local/src/php-7.4.20/ext/pdo_oci/
phpize
./configure --with-php-config=/usr/local/php74/bin/php-config --with-pdo-oci=instantclient,/usr/lib/oracle/11.2/client64/lib
make
make install
- 编辑php.ini 加入对应扩展. 检查模块
vim /usr/local/php74/lib/php.ini
extension=oci8 //添加oci8扩展
extension=pdo_oci //添加pdo_oci扩展
php -m //列出PHP已经加载的扩展. 确保正确加载 oci8 和 pdo_oci