Ubuntu 16.04下安装PHP 7过程详解
发布时间 - 2026-01-11 00:23:51 点击率:次前言

最近由于换了硬盘重装了(升级)系统到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创建合适的链接
- 设置环境变量
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官网放的最新的版本,使用下面的 命令既可查看
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/oci8 phpize ./configure --with-oci8=instantclient,/opt/oracle/instantclient_12_1 sudo make
执行完上面的步骤,应该会生成一个modules文件夹,里面就有我们想要的extension。
编译pdo_oci
步骤和编译oci8是一样的,但是configure参数不一样,所以还是写一下。
cd ../../ext/pdo_oci phpize # 最后面要指定版本号 ./configure --with-pdo-oci=instantclient,/opt/oracle/instantclient_12_1,12.1 sudo 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/20151012 cp 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/cli Loaded 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.so extension=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
# php7
# php
# 详解Ubuntu下安装和配置Apache2
# Ubuntu 16.04安装Apache Tomcat的方法
# ubuntu 14.04 安装 apache ant教程
# Ubuntu18.04 安装mysql8.0.11的图文教程
# Ubuntu Server 16.04 LTS 上安装 LAMP图解教程
# Ubuntu 12.04 x64 编译安装lamp的步骤
# Ubuntu 18.04上安装Apache、MySQL、PHP、LAMP的完整教程
# 还需要
# 的是
# 也有
# 官网
# 也要
# 其他的
# 重启
# 目录下
# 就会
# 会有
# 好了
# 有个
# 出了
# 就有
# 两种
# 要在
# 可以通过
# 很简单
# 换了
# 还有一个
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
实现点击下箭头变上箭头来回切换的两种方法【推荐】
如何用狗爹虚拟主机快速搭建网站?
如何登录建站主机?访问步骤全解析
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
详解MySQL数据库的安装与密码配置
如何生成腾讯云建站专用兑换码?
Laravel如何实现API资源集合?(Resource Collection教程)
php打包exe后无法访问网络共享_共享权限设置方法【教程】
Angular 表单中正确绑定输入值以确保提交与验证正常工作
Laravel API资源类怎么用_Laravel API Resource数据转换
EditPlus中的正则表达式实战(6)
JavaScript实现Fly Bird小游戏
如何快速生成可下载的建站源码工具?
如何在服务器上三步完成建站并提升流量?
浅谈Javascript中的Label语句
什么是javascript作用域_全局和局部作用域有什么区别?
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
香港服务器WordPress建站指南:SEO优化与高效部署策略
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
Swift中循环语句中的转移语句 break 和 continue
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
如何在IIS7中新建站点?详细步骤解析
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
javascript日期怎么处理_如何格式化输出
怎样使用JSON进行数据交换_它有什么限制
公司网站制作价格怎么算,公司办个官网需要多少钱?
Laravel怎么为数据库表字段添加索引以优化查询
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
Laravel如何使用withoutEvents方法临时禁用模型事件
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
javascript基本数据类型及类型检测常用方法小结
Laravel如何配置和使用缓存?(Redis代码示例)
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
太平洋网站制作公司,网络用语太平洋是什么意思?
高端企业智能建站程序:SEO优化与响应式模板定制开发
奇安信“盘古石”团队突破 iOS 26.1 提权
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
如何在局域网内绑定自建网站域名?
如何破解联通资金短缺导致的基站建设难题?
制作电商网页,电商供应链怎么做?
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
Laravel中的withCount方法怎么高效统计关联模型数量
独立制作一个网站多少钱,建立网站需要花多少钱?
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】

