前言:项目遇到php7.4 需要读取另外一个Oracle数据库做中间库进行数据交互,但是宝塔并没有一键安装扩展,只能手动安装。

环境:CentOS 7.9宝塔 8.0.1Nginx 1.22.1PHP 7.4

1.安装Oracle

下载打包好的文件,或者到官网下载
(注意要下载basic和devel,用来编译oci和pdo_oci。我这里下载的是rpm,方便安装。我这里下载的是11.2)
将下载的basic放在/root/oracle/,devel放在/root/oracle/。然后运行命令安装。

rpm -ivh /root/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
rpm -ivh /root/oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm

执行结果

这里一定要先安装basic在安装devel 否则无法安装

2.编辑 /etc/profile

在文件后面添加

export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/11.2/client64/lib
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/include/oracle/11.2/client64
export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'

编辑内容
保存后在终端运行 source /etc/profile,让环境变量立即生效。

3.安装PECL

wget http://pear.php.net/go-pear.phar
php go-pear.phar

执行结果

这里如果PHP目录不对一定要进行修改
如果目录正确一直按回车就行

4.安装OCI8

这里要注意先将php7.4的配置项【禁用函数】中删除popenreadlinkputenv三个函数。然后终端中运行

pecl channel-update pecl.php.net
/www/server/php/74/bin/pecl install oci8-2.2.0

这里一定不能填错版本不一致安装错了的话只能卸载PHP或者重装系统了。以下是各个版本不同的安装命令

PHP 8:'pecl install oci8'
PHP 7:'pecl install oci8-2.2.0'
PHP 5.2 - PHP 5.6:'pecl install oci8-2.0.12'
PHP 4.3.9 - PHP 5.1:'pecl install oci8-1.4.10'

5.安装PDO_OCI

首先先下载PHP源码,
将源码包中的压缩包中的ext/pdo_oci文件夹上传到/www/server/php/74/include/php/ext/。
然后将php.ini配置文件中[oci8]下面的oci8.privileged_connect,前面分号去掉,Off修改为On,后面的配置项自己依据实际情况去配置。然后保存重启或重载php服务。

然后终端运行:

cd /www/server/php/74/include/php/ext/pdo_oci
/www/server/php/74/bin/phpize
./configure --with-php-config=/www/server/php/74/bin/php-config
make && make install

6.PHP-FPM配置

编辑/www/server/php/74/etc/php-fpm.conf,将下面两行代码加进去。

env[LD_LIBRARY_PATH] = /usr/lib/oracle/11.2/client64/lib
env[ORACLE_HOME] = /usr/lib/oracle/11.2/client64/lib

编辑内容

运行成功后,再到php.ini文件中检查是否有两个so,没有的话要记得添加。

extension="oci8.so"
extension="pdo_oci.so"

重启服务器或者重启PHP

最后来一下phpinfo(); 看看效果。
输出结果

文件下载

Oracle
PHP

参考文章

PECL 安装介绍
宝塔面板PHP7.1安装Oracle扩展

最后修改:2023 年 08 月 17 日
您的赞赏是对我最大的支持。