本次使用的环境:
- CentOS7.9 (CentOS Linux release 7.9.2009 (Core))
- PHP7.4
- Oracle 11.2.0.4
安装php7.4
PHP(“PHP: Hypertext Preprocessor”,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合 web 开发。
这里利用 bt 自带的安装php7.4,不再赘述如何安装。
安装完之后路径类似这样:
安装扩展之前确认 phpize 是否可以运行
phpize简介.
phpize命令是准备php扩展安装的编译环境的。. 用于手动编译安装php扩展。. 一般使用pecl来安装php扩展。. 如果pecl没法安装,比如在防火墙后面,或要安装的扩展在pecl还没有兼容包。. 则使用phpize手动编译安装。
phpize一般随着php的安装默认安装到php的bin目录下。
如果运行phpize缺失libcrypto.so.1.0.0,则需要进行关联。关联的方法
# 查询是否安装 openssl
ls -l /usr/lib64/libcrypto*
# 如果没安装则进行安装 openssl,安装略过
yum install -y openssl-libs.x86_64 openssl-devel.x86_64 openssl-devel.i686 openssl-libs.i686
ls -l /usr/lib64/libcrypto*
ln -s libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.1.0.0
ln -s libssl.so.1.0.2k /usr/lib64/libssl.so.1.0.0
安装php7.4的扩展oci8
什么是oci
这些函数允许您访问 Oracle 数据库。它们支持 SQL 和 PL/SQL 语句。基本功能包括事务控制,PHP绑定 变量到 Oracle 占位符,并支持大型对象 (LOB) 类型 和收藏。Oracle 的可扩展性功能,如数据库驻留 还支持连接池 (DRCP) 和结果缓存。
因为默认安装的已经自带oci,如果需要自己下载,则需要找到对应的版本进行编译。下图是关系映射表
编译代码的步骤,注意区分是自带oracle 还是 oracle client
# oracle home 方式
cd /www/server/php/74/src/ext/oci8
/www/server/php/74/bin/phpize
./configure --with-oci8=shared,/u01/oracle/product/11.2.0/dbhome_1 --with-php-config=/www/server/php/74/bin/php-config
make -j`nproc`
# oracle client方式
cd /www/server/php/74/src/ext/oci8
/www/server/php/74/bin/phpize
./configure --with-oci8=shared,instantclient,/path/to/instant/client/lib
make -j`nproc`
安装完成启用配置 php.ini
[oci8]
extension = oci8.so
安装php7.4的扩展pdo_oci
PDO_OCI DSN — 连接到 Oracle 数据库
PDO_OCI数据源名称 (DSN) 由以下元素组成:
DSN前缀
DSN 前缀是oci:。
dbname(甲骨文即时客户端)
Oracle Instant Client 连接的 URI 采用以下形式。 如果要连接到 中定义的数据库,请仅使用数据库的名称:。dbname=//hostname:port-number/databasetnsnames.oradbname=database
charset
当前环境句柄的客户端字符集。
pdo_oci的安装方式和 oci8的安装方式一样
cd /www/server/php/74/src/ext/pdo_oci
/www/server/php/74/bin/phpize
./configure --with-pdo-oci=shared,/u01/oracle/product/11.2.0/dbhome_1 --with-php-config=/www/server/php/74/bin/php-config
make -j`nproc`
cd /www/server/php/74/src/ext/pdo_oci
/www/server/php/74/bin/phpize
./configure --with-pdo-oci=instantclient,/path/to/instant/client/lib --with-php-config=/www/server/php/74/bin/php-config
make -j`nproc`
安装完成启用配置 php.ini
[pdo_oci]
extension = pdo_oci.so
配置环境参数
编辑php-fpm.conf文件 下面加如下配置。主要NLS_LANG的编码,使用自己的编码
env[LD_LIBRARY_PATH] = /u01/oracle/product/11.2.0/dbhome_1/lib
env[ORACLE_HOME] = /u01/oracle/product/11.2.0/dbhome_1
env[NLS_LANG] = AMERICAN_AMERICA.ZHS16GBK