前言

最近由于换了硬盘重装了(升级)系统到Ubuntu16.04之后,开发环境也要重新安装,其实16.04源里面默认的PHP版本就是7.x,但是有个问题就是没有OCI扩展,有项目需要使用到Oracle数据库。

准备编译环境

由于全部编译太过于繁琐,而且很多依赖会有问题,所以我们选择另外一种方案,能使用apt-get安装都使用apt-get安装。不能使用apt-get才自己编译,这样可以节省大量的时间。因为有的依赖真的是很头疼。

由于在Ubuntu16.04上,默认的PHP版本就是7.x。由于我们要使用Apache2.4+PHP,所以安装如下模块即可直接解析PHP。

sudo apt-get install php-dev libapache2-mod-php

这样最基本的模块就安装好了,如果还需要其他的模块,可以通过apt-get快捷安装;比如还需要MySQL和mb_string相关的模块。

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创建合适的链接

设置环境变量

123456789101112sudo unzip instantclient-basic-linux.x64-12.1.0.2.0.zipsudo unzip instantclient-sdk-linux.x64-12.1.0.2.0.zipsudo mv instantclient_12_1/ /opt/oracle/cd/opt/oracle/instantclient_12_1/# 建立符号链接sudo ln -s libclntsh.so.12.1 libclntsh.sosudo ln -s libocci.so.12.1 libocci.so# 打开 /etc/profile 在最后面加exportLD_LIBRARY_PATH=/opt/oracle/instantclient_12_1:$LD_LIBRARY_PATHexportPATH=/opt/oracle/instantclient_12_1:$PATH# 最后source一下,使配置生效source /etc/profile

下载PHP源码

首先我们要确定已经安装的PHP的版本,由于使用apt-get安装,版本可能不是PHP官网放的最新的版本,使用下面的 命令既可查看

php -v

发现我的安装的版本是7.0.4,那么我们对应的下载PHP-7.0.4版本的源码。

两种方式可以下载到源码。

从官网下载源码包

从GitHub 仓库 clone

官网下载源码很简单,打开php.net的Download页面,选择要下载的版本。或者从GitHub仓库clone指定版本(或者先clone再checkout想要的版本),如

git clone -b PHP-7.0.4 https://github.com/php/php-src && cd php-src

编译OCI8/PDO_OCI

经过如上的步骤我们已经进入到下载的PHP源码根目录了,那么我们开始编译。

编译oci8

进入到扩展oci8的源码目录,使用phpize

cd ext/oci8phpize./configure --with-oci8=instantclient,/opt/oracle/instantclient_12_1sudo make

执行完上面的步骤,应该会生成一个modules文件夹,里面就有我们想要的extension。

编译pdo_oci

步骤和编译oci8是一样的,但是configure参数不一样,所以还是写一下。

cd ../../ext/pdo_ociphpize# 最后面要指定版本号./configure --with-pdo-oci=instantclient,/opt/oracle/instantclient_12_1,12.1sudo make

结果也和上面一样。

使用我们编译的扩展

首先我们要知道现行PHP的ext目录在哪里

php -i | grep "extension_dir"

我这里显示的是extension_dir => /usr/lib/php/20151012 => /usr/lib/php/20151012,那么我们先把我们编译的扩展复制到/usr/lib/php/20151012下

# 先进入对应的modules目录下cp oci8.so /usr/lib/php/20151012cp pdo_oci.so /usr/lib/php/20151012

然后我们还要在php.ini中添加相关配置项,首先也要知道php.ini的位置

p -i | grep "Configuration File"

打印出了如下信息

Configuration File (php.ini) Path => /etc/php/7.0/cliLoaded Configuration File => /etc/php/7.0/cli/php.ini

这样我们就知道了php.ini的位置,但是这个是CLI(命令行接口)的配置文件,我们需要使用Apache的(CGI)。我们到目录/etc/php/7.0/下发现还有一个名为apache2的目录,里面也有php.ini文件,那么我们编辑apache2目录下的php.ini

sudo vim php.ini

在里面加入

extension=oci8.soextension=pdo_oci.so

最后重启Apache

systemctl restart apache2.service

查看一下phpinfo()发现OCI和PDO_OCI均已安装。到这里安装已经全部完成了。

Linux小技巧

在安装和查资料的过程中发现了一下很实用的命令,也把它们记录下来。

# 重启某个服务sudo systemctl restart apache2.service

# 查看某个服务的状态sudo systemctl status apache2.service

# 查看php相关的模块(其他的类似)apt-cache search php- | less

# 具体查看某个模块的详细信息apt-cache show package_name

ubuntu 16.04 运行php,乌班图Ubuntu 16.04下安装PHP 7过程详解相关推荐

  1. ubunntu安装php7.0_乌班图Ubuntu 16.04下安装PHP 7过程详解

    前言 最近由于换了硬盘重装了(升级)系统到Ubuntu16.04之后,开发环境也要重新安装,其实16.04源里面默认的PHP版本就是7.x,但是有个问题就是没有OCI扩展,有项目需要使用到Oracle ...

  2. Ubuntu server版本系统下安装显卡驱动过程详解

    前期准备 确认系统是否需要可视化图形桌面,如果需要,安装完桌面之后再进行显卡驱动的安装.以下操作均需在root用户权限下操作 1.先更改国内安装源(如果是桌面版则可以直接修改aliyun的源,或者在s ...

  3. tecplot脚本在Linux系统下运行,Linux系统下安装Tecplot的步骤详解

    众所周知,Tecplot是Linux系统中的数据分析软件,Tecplot的功能正在变得更加完善,使用的人群也在逐渐增多.下面,我们就跟随U大侠小编一起来看看Linux系统下安装Tecplot的步骤详解 ...

  4. Ubuntu 16.04或14.04里下安装搜狗输入法(图文详解)(全网最简单)

    不多说,直接上干货! 其实啊,很简单 分三步走 1.添加fcitx的键盘输入法系统,因为sogou是基于fcitx的,而系统默认的是iBus: 2.安装sogou输入法: 3.设置系统参数及一些注意点 ...

  5. python做动态折线图_Python数据可视化 pyecharts实现各种统计图表过程详解

    1.pyecharts介绍 Echarts是一款由百度公司开发的开源数据可视化JS库,pyecharts是一款使用python调用echarts生成数据可视化的类库,可实现柱状图,折线图,饼状图,地图 ...

  6. ubuntu12.04安装及配置过程详解1

    http://wenku.baidu.com/view/f8bc1d29453610661ed9f4a3.html

  7. 软碟通   linux_使用UltraISO软碟通制作乌班图Ubuntu安装U盘的步骤

    开始之前需要先下载乌班图Ubuntu 镜像和制作软件 UltraISO 软碟通. 官方最新版乌班图下载:https://cn.ubuntu.com/download 官方旧版本乌班图下载:https: ...

  8. 【Linux】Ubuntu 20.04安装教程(图文详解)

    Ubuntu 20.04安装教程(图文详解) 准备工作 打开 VWMARE 进行安装配置 虚拟机已经配置完毕后的 Ubuntu20.0.4 安装 安装VMware Tools 准备工作 下载 Ubun ...

  9. Ubuntu下安装Qt全部过程

    Ubuntu下安装Qt全部过程 (2013-03-04 22:12:02) 转载▼   分类:ARM Linux 1.到官网http://qt-project.org/downloads或者ftp:/ ...

  10. vm15安装mac 未能与服务器联系,VMware15/16解锁VMware安装MacOS的步骤详解

    VMware版本:VMware-workstation-full-16 VMware版本:VMware-workstation-full-15 操作系统版本:Windows 10 VMware下载地址 ...

最新文章

  1. laravel翻看php日志,关于Laravel的日志用法
  2. Adaboost(自适应提升树)算法原理
  3. 为什么说Swift正在颠覆整个互联网生态?
  4. java script创建对象_javascript笔记:深入分析javascript里对象的创建
  5. 豆瓣9分,颠覆世界观的好书,每读一章就感叹一次:原来如此!(免费领)
  6. 诺基亚E5删除自己安装的应用程序
  7. 基于JAVA+Servlet+JSP+MYSQL的新闻发布系统
  8. java9 javascript_JS(JavaScript)的j进一步了解9(更新中···)
  9. Bailian2932 期末考试第三题——最大最小数之差【文本+进制】
  10. 第三届泰迪杯技能赛赛后分享总结
  11. 绍兴文理学院计算机网络期末,绍兴文理学院高频电子线路期末考试题.doc
  12. 硅谷创业天堂的启示!
  13. C语言实现倒计时关机程序(goto语句、strcpm函数、system函数)
  14. 浅谈cpu、缓存、内存之间的关系
  15. appearance
  16. GBase 8s的高可用1-HAC(双机高性能实时数据复制)高可用方案
  17. Qml SwipeView禁用滑动动画
  18. SAP 标准带料委外加工 投A产B业务场景及功能操作演示(1)
  19. pandas分组计算平均值_python – Pandas:如何按符号分组并按n行取平均值
  20. CodeSys WIN V3 x64 PLC控制罗克韦尔的1734 Ethernet/IP远程控制模块

热门文章

  1. memset函数的使用
  2. 内存分配-堆-栈-静态区
  3. nyoj461 Fibonacci数列(4)解通项公式
  4. linux 主机支持远程唤醒_linux 通过wol远程开机【转】
  5. 【2019上海网络赛:D】Counting Sequences I(dfs+多重集合排列)
  6. hdoj2084:数塔(dp基础题----递归写法/状态转移方程法)
  7. 中国海洋大学c语言期末题库,中国海洋大学C语言期末笔试2010年秋A试题.doc
  8. java套接字通信_Java网络通信套接字 | 学步园
  9. SLAM--线性化求解估计位姿
  10. C/C++[PAT B level 1036]图形输出