前言:项目遇到php7.4 需要读取另外一个Oracle数据库做中间库进行数据交互,但是宝塔并没有一键安装扩展,只能手动安装。
环境:CentOS 7.9
、宝塔 8.0.1
、Nginx 1.22.1
、PHP 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的配置项【禁用函数】中删除popen
、readlink
、putenv
三个函数。然后终端中运行
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()
; 看看效果。