linux php7安装oracle(oci pdo_oci)扩展

孤人 提交于 2020-12-17 21:33:10

文章整理是在安装成功后整理的,中间可能会有一些问题;可以参考最下方的链接(最下方的链接都是我面向百度编程参考的博客信息,在此谢过各位大佬☺) 。

背景:

linux系统,centos7.8,apache2.4,php7.0.33

apache,php已安装完成且正常运行

oracle11.2(下文会说明选择oracle11.2的理由)

 

1、安装oracle客户端

①首先去oracle官网(https://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html)下载三个包到电脑本地(建议,因为需要登录)

oracle-instantclient11.2-devel-12.2.0.1.0-1.x86_64.rpm
oracle-instantclient11.2-sqlplus-12.2.0.1.0-1.x86_64.rpm
oracle-instantclient11.2-basic-12.2.0.1.0-1.x86_64.rpm

注意:选择11.2版本的原因是,本人安装过12.2的版本,pdo_oci编译失败,始终无法成功,同公司大佬试过10-12的版本,只有11.2成功了(可能有其他解决办法,但是我还没发现);下载时复制11.2以及之前内容搜索即可。

②将这三个包通过xftp放到/usr/lib/oracle下,oracle文件夹为新建文件夹;

③执行安装命令

rpm -ivh oracle-instantclient11.2-*

④添加环境变量,并保存

[root@localhost ~]# vim /etc/profile
## 在尾部增加如下内容
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export ORACLE_BASE=/usr/lib/oracle/11.2
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH

保存退出后执行

source /etc/profile

注意:安装oci8和pdo_oci扩展都需要进行这第一步

 

2、安装oci8扩展

oci8扩展有两种安装方式,pecl安装(作者认为是有脚本的编译安装)我操作时失败了,有兴趣的可以参照参考链接1尝试

官网下载 oci8-2.1.8.tgz ,其他人的博客中基本是2.0-2.2,我选择了这个版本,顺序执行下方命令:

[root@localhost src]# mkdir /usr/lib/oci8 && cd /usr/lib/oci8    //与oracle安装包放在一起,方便记忆
[root@localhost src]# wget http://pecl.php.net/get/oci8-2.1.8.tgz
[root@localhost src]# tar xzvf oci8-2.1.8.tgz
[root@localhost src]# cd oci8-2.1.8
[root@localhost oci8-2.1.8]# /usr/bin/phpize         //此处为phpize命令的全路径,前面是我的全路径

//php-config也是其命令的全路径,我的如下方
[root@localhost oci8-2.1.8]# ./configure --with-oci8=instantclient,/usr/lib/oracle/11.2/client64/lib --with-php-config=/usr/bin/php-config
[root@localhost oci8-2.1.8]# make && make install
# php.ini中增加扩展引入
[root@localhost oci8-2.1.8]# vim /etc/php.d/oci8.ini    //oci8.ini是新建的
extension=oci8.so//此处为oci8.so的全路径,在编译后有展示
## 验证是否成功
[root@localhost oci8-2.1.8]# php -m | grep oci8
oci8

注意:

①//是注释,自己把控

②执行phpize和configure时,要写phpize和php-config的全路径,可以根据关键字查询,如 cd / && find -name phpize

③将oci8.so写入php.ini扩展时,可以直接将上方的信息写入php.ini文件,也可以入命令中处理(此处理方法是因为在php.ini有命令:目录下php.d/*.ini都是php.ini的子配置文件,同样生效)

④改完验证时记得重启php和apache(我也不知道是否都有必要)

⑤如果执行make 或者 ./configure时,如果报错,可以尝试加下软连接(具体不太懂,比着大佬抄的)

ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client  
ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client

 

3、安装pdo_oci扩展

①执行如下命令

vi /etc/ld.so.conf          //打开文件

/usr/lib/oracle/11.2/client64/lib/     //加入此行,保存退出

②建立软连接,如果安装oci8扩展时,已经建立过,跳过即可

ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client  
ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client

③加环境变量,由于1④已经添加过,且一致,我跳过了此步骤,但是编译时报错,我执行了命令

export  LD_LIBRARY_PATH=$ORACLE_HOME/lib

然后重新编译成功的

④官网下载php-7.0.33.tar.gz(与你的php版本一致的源码包),解压后将pdo_oci文件夹放到服务器的php  ext扩展中;我是用下方链接直接改的版本号下载的

https://www.php.net/distributions/php-5.3.27.tar.gz

⑤进入php扩展目录下的pdo_oci文件夹

cd /usr/include/php/ext/pdo_oci/   //这是我的路径

⑥执行下方命令,编译安装处理,类似oci8安装

[root@localhost oci8-2.1.8]# /usr/bin/phpize         //此处为phpize命令的全路径,前面是我的全路径

//php-config也是其命令的全路径,我的如下方
[root@localhost oci8-2.1.8]# ./configure --with-pdo-oci=instantclient,/usr,11.2 --with-php-config=/usr/bin/php-config
[root@localhost oci8-2.1.8]# make && make install
# php.ini中增加扩展引入
[root@localhost oci8-2.1.8]# vim /etc/php.d/pdo_oci.ini    //pdo_oci.ini是新建的
extension=pdo_oci.so//此处为pdo_oci.so的全路径,在编译后有展示

⑦验证

./php -i |grep oci(此处为php命令的全路径)
//成功
oci8
......
PDO drivers => mysql, sqlite, sqlite2, oci  

或者执行命令

php -m

列表展示oci8 与pdo_oci即成功

注意(与oci8安装时相同的点不重复):

①./configure执行报错,可尝试执行,有篇博客写到防止php对11的支持性不够(不过后来找不到了0.0)

ln -s /usr/include/oracle/11.2 /usr/include/oracle/10.2.0.1
ln -s /usr/lib/oracle/11.2 /usr/lib/oracle/10.2.0.1

②我在执行/configure时,曾尝试用

./configure --with-php-config=/usr/bin/php-config --with-pdo-oci=instantclient,/usr/lib/oracle/11.2/client64/lib

执行,此时用的pdo-oci是根路径,但是报错了,用流程中的语句进行就可以,原因未知

===================================================================================

至此,我的php oracle便安装完成,并成功

 

参考资料:

1、https://blog.51cto.com/2char/2096815(基本思路都来自此处,抄了70%)

2、https://blog.csdn.net/gxhacx/article/details/82838911

3、https://www.jianshu.com/p/2344682a3185?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!