前言
最近由于换了硬盘重装了(升级)系统到Ubuntu16.04之后,开发环境也要重新安装,其实16.04源里面默认的PHP版本就是7.x,但是有个问题就是没有OCI扩展,有项目需要使用到Oracle数据库。
准备编译环境
由于全部编译太过于繁琐,而且很多依赖会有问题,所以我们选择另外一种方案,能使用apt-get安装都使用apt-get安装。不能使用apt-get才自己编译,这样可以节省大量的时间。因为有的依赖真的是很头疼。
由于在Ubuntu16.04上,默认的PHP版本就是7.x。由于我们要使用Apache2.4+PHP,所以安装如下模块即可直接解析PHP。
?
1 | sudo apt-get install php-dev libapache2-mod-php |
这样最基本的模块就安装好了,如果还需要其他的模块,可以通过apt-get快捷安装;比如还需要MySQL和mb_string相关的模块。
?
1 | sudo apt-get install php-mysql php-mbstring |
这样就会自动安装好相关的模块。
安装Oracle Client
由于要编译OCI扩展,我们需要Oracle客户端,这里我们下载Oracle Instant Client,选择Instant Client for Linux x86-64 basic
版本下载。
另外要编译OCI必须还需要instant client SDK
包,下载解压之后合并到Base。
给出的网页最后面也有安装步骤,这里简述一下
解压zip包,放置到某个目录下
为当前版本的Instant Client创建合适的链接
设置环境变量
?
123456789101112 | sudo unzip instantclient-basic-linux.x64-12.1.0.2.0.zip sudo unzip instantclient-sdk-linux.x64-12.1.0.2.0.zip sudo mv instantclient_12_1/ /opt/oracle/ cd /opt/oracle/instantclient_12_1/ # 建立符号链接 sudo ln -s libclntsh.so.12.1 libclntsh.so sudo ln -s libocci.so.12.1 libocci.so # 打开 /etc/profile 在最后面加入 export LD_LIBRARY_PATH= /opt/oracle/instantclient_12_1 :$LD_LIBRARY_PATH export PATH= /opt/oracle/instantclient_12_1 :$PATH # 最后source一下,使配置生效 source /etc/profile |
下载PHP源码
首先我们要确定已经安装的PHP的版本,由于使用apt-get安装,版本可能不是PHP官网放的最新的版本,使用下面的 命令既可查看
?
1 | php - v |
发现我的安装的版本是7.0.4,那么我们对应的下载PHP-7.0.4版本的源码。
两种方式可以下载到源码。
从官网下载源码包
从GitHub 仓库 clone
官网下载源码很简单,打开php.net的Download页面,选择要下载的版本。或者从GitHub仓库clone指定版本(或者先clone再checkout想要的版本),如
?
1 | git clone -b PHP-7.0.4 https: //github .com /php/php-src && cd php-src |
编译OCI8/PDO_OCI
经过如上的步骤我们已经进入到下载的PHP源码根目录了,那么我们开始编译。
编译oci8
进入到扩展oci8的源码目录,使用phpize