文章整理是在安装成功后整理的,中间可能会有一些问题;可以参考最下方的链接(最下方的链接都是我面向百度编程参考的博客信息,在此谢过各位大佬☺) 。
背景:
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
来源:oschina
链接:https://my.oschina.net/u/2480675/blog/4813979