前言

最近由于换了硬盘重装了(升级)系统到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

ubunntu安装php7.0_乌班图Ubuntu 16.04下安装PHP 7过程详解相关推荐

  1. Ubuntu 16.04下安装Caffe(GPU版本 GTX970)

    Ubuntu 16.04下安装Caffe(GPU版本 GTX970) 个人分类: Deep Learning 2018年8月6日更新说明:距上次安装成功没多久,显卡驱动莫名失效,没有解决,索性重装了系 ...

  2. Ubuntu 16.04 下安装VMware Tools(三行命令搞定,亲测好使)

    Ubuntu 16.04 下安装VMware Tools(三行命令搞定,亲测好使): 第一行命令:sudo apt-get upgrate 第二行命令:sudo apt-get install ope ...

  3. ubuntu 16.04下安装mysql

    ubuntu 16.04下安装mysql 从官网下载mysql-apt-config_0.8.12-1_all.deb,下载地址为:https://dev.mysql.com/downloads/re ...

  4. Ubuntu 16.04 下安装运行 Suricata

    介绍 Suricata是一个免费.开源.成熟.快速.健壮的网络威胁检测引擎.Suricata引擎能够进行实时入侵检测(IDS).内联入侵预防(IPS).网络安全监控(NSM)和离线pcap处理.Sur ...

  5. Ubuntu 16.04 下安装网易云

    Ubuntu 16.04 下安装网易云 目录 一.下载 二.开始安装 三.安装完成 四.运行 一.下载 官网看不到下载16.04的链接,只有18.04,但是依旧可以访问到,地址为: http://s1 ...

  6. 搜狗输入法 for linux安装失败,Ubuntu 16.04下安装sogou拼音输入法的错误问题

    引言:sogou输入法是市场上最为好用和流行的输入法,最为良心的是还有Linux版本,这让我等Linux人士欢呼雀跃.在新出的Ubuntu 16.04上安装sogou输入法的时候,碰到了一些问题,主要 ...

  7. (已解决) Ubuntu 16.04 下安装和使用 TP-Link 的USB无线网卡

    在 Ubuntu 16.04 下使用 TP-Link USB无线网卡的通用方法 第一步: 查看 TP-link 网卡具体型号 未插无线网卡时, 终端里输入 lsusb 插上USB无线网卡, 终端里再次 ...

  8. Ubuntu 16.04下安装ffmpeg和opencv的安装与简介

    文章目录 ffmpeg简介 资料准备 0. 检查依赖yasm与gcc,以及pkg-config 1. 下载ffmpeg 2. 解压进入解压目录 3. 准备执行编译配置操作,执行如下操作 4. 编译与安 ...

  9. 谷歌浏览器linux 64怎么安装插件,Ubuntu 16.04下安装64位谷歌Chrome浏览器

    1.进入 Ubuntu 16.04 桌面,按下 Ctrl + Alt + t 键盘组合键,启动终端. 也可以按下 Win 键(或叫 Super 键),在 Dash 的搜索框中输入 terminal 或 ...

最新文章

  1. 13.执行外部命令subprocess
  2. 关于python中程序流程结构-Python程序结构
  3. STM32开发 -- Secure CRT 自动记录日志和时间戳功能配置
  4. boost::hana::back用法的测试程序
  5. P3368 【模板】树状数组 2(区间修改单点查询)
  6. 我是如何使用laydate日历插件更换掉老项目不好用的日历插件datepicker的
  7. Taro+react开发(47)taro中消息机制
  8. SqlServer2008修改编辑前200行
  9. easyui 隐藏input_Easyui-Datebox设置隐藏或者不可用如何解决
  10. OpenGL超级宝典(第7版)笔记18 位移、旋转、缩放、观察、透视矩阵 代码实现
  11. DES 加密解密方法
  12. Word文档怎样转化为pdf格式
  13. 魔兽争霸3冰封王座十大经典战役全集
  14. 跳马周游c++_汉诺塔,n皇后,跳马问题汇总
  15. 计算机二级Office计算机基础知识选择题
  16. vue-cli热更新 失效
  17. 计算机偏置,深度学习中偏置的作用
  18. CPU、MCU、FPGA、SoC……这些芯片究竟是啥?
  19. 因式分解机(Factorization Machines,FM )
  20. intel CPU集显ID速查

热门文章

  1. spark代码中添加logger_JAVA代码如何设置SPARK的日志打印级别
  2. java工程师占比_2020年Java工程师就业分析
  3. python input函数详解_Python如何使用input函数获取输入,看完你就会了
  4. Binder内存拷贝的本质和变迁
  5. git创建分支合并到master分支步骤
  6. C++ 命名空间三种用法
  7. Vue之ElementUI导航菜单
  8. 用C语言解决狼羊白菜过河的思路,基于visual Studio2013解决C语言竞赛题之1079狼羊过河...
  9. 地图样式自定义_用地图做数据分析,地图可视化更显高级
  10. c语言中如何用字母代替加减乘除的符号,c语言加减乘除代码