php7 oci扩展安装翻车记录

之前由我们一群学生组建了教务网开发团队,目的是为了更换老旧的经常崩溃的教务系统。由于学校数据库是oracle的,所以后端也是直接写成oracle的了,采用的laravel5框架。

数据库是远端机器跑的,和我本地无关,前几天重新安装的minimal-centos6.9,原因是之前的7.x用不习惯…都是坑,从esxi就开始翻车,刚开始没权限…后来给了权限之后网络配置问题…然而总算是装好了,麻烦来了…,环境一切正常,然而开nginx就除了根目录全都404,查了下laravel需要rewrite的支持,nginx开启后发现无效,遂转Apache,然后就开始了无尽的报错

首先是网页报错无法连接oracle数据库,phpinfo看了下,没有oci8扩展支持,于是准备装oci8,翻到了前辈们的教程

1.安装依赖

rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm

rpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm

rpm -ivh oracle-instantclient12.1-jdbc-12.1.0.2.0-1.x86_64.rpm

rpm -ivh oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

tar zxvf oci8-2.1.3.tgz

cd oci8-2.1.3

phpize

./configure –with-oci8=shared,instantclient,/usr/lib/oracle/12.1/client64/lib –with-php-config=/usr/local/php/bin/php-config

make && make install

这里我下载的是2.0.10版本的oci8插件,在make的时候提示oci8.c报错,找不到头文件

ext/standard/php_smart_str.h:没有那个文件或目录

一番查找之后发现新版本的php_smart_str.h更名为php_smart_string.h了……

更改之后未见报错但是提示许多编译错误,于是去下了个新版的oci8-2.1.8,成功make&install

2.修改php.ini配置

nano /usr/local/php/etc/php.ini

在其中添加

extension=oci8.so

记住一定是oci8.so,一开始我直接在源文件基础上改的,写成php_oci8.so,重启phpfpm和Apache之后仍未发现oci扩展,查看php启动日志发现仍然找不到文件,于是排查文件目录发现是自己写错了文件名(囧…

之后保存文件,重启phpfpm,Apache,phpinfo即可看见新装扩展,

进入程序发现已经可以正常使用

囧!真的是每个环节都有坑呢……o(╯□╰)o不过作为折腾党,这是个很好的教训w