Ubuntu 16.04下安装PHP 7过程详解

前言

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

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

  1. 从官网下载源码包
  2. 从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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • Ubuntu+Nginx+Mysql+Php+Zend+eaccelerator安装配置文字版

    把我架设lnmp网站的过程写出来,希望对想架设网站的朋友有所帮助,如有更好的办法请提出来. 之所以用nginx没用apache,是因为nginx的效率更高一些,尤其是对一些低配置的服务器,比如我在单位256M内存的旧机器上架设的服务器. 1.安装ubuntu server 10.04或10.10,其中安装语言选的en,时区shanghai,服务只安装ssh,其他全部用默认就行. 提示:以上安装过程完成后,建议用其他计算机登录服务器,windows系统可以用putty,linux系统直接在终端用命

  • 基于ubuntu下nginx+php+mysql安装配置的具体操作步骤

    1.更新 1 sudo apt-get update 2.安装nginx 1 sudo apt-get intsall nginx Ubuntu安装之后的文件结构大致为:* 所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下*程序文件在/usr/sbin/nginx * 日志放在了/var/log/nginx中*并已经在/etc/init.d/下创建了启动脚本nginx* 默认的虚拟主机的目录设置在了/var/www/ng

  • Ubuntu12下编译安装PHP5.3开发环境

    最近项目遇到一个坑爹的事情,一个源码必须使用PHP5.3,但是现在Ubuntu上自带的版本是5.4,降级之后会出各种奇怪的问题,最后没办法,只能一步步在Ubuntu12.04server上自己编译PHP5.3,比繁琐,共享之. 安装Apache2.2 复制代码 代码如下: sudo apt-get install apache2 -y 然后安装MySQL5.5 复制代码 代码如下: sudo apt-get install mysql-server-5.5 -y 接着就是编译依赖环境: 复制代码

  • ubuntu+php环境下的Memcached 安装方法

    目前被很多系统所使用,例如Flick.Twitter等.这是一套开放源代码软件,以BSD license授权发布.下面记录一下在lamp环境下的Memcached安装.关于Memcached的应用,这里有两篇不错的文章:<应用 memcached 提升站点性能>.<Discuz!的Memcache缓存实现> 使用apt安装memcached apt-get install memcached 启动memcached 1. 终端下使用命令 memcached就可以启动 .例如 mem

  • Ubuntu linux 安装 PHP5.3.0的命令

    刚刚手头有台机器刚装了 ubuntu, 编译了一下 LAMP 系统, PHP 5.3.0 改动比较大. 第一眼看到的 php.ini 文件里已经变动了. 感觉比一以前版本的舒服点了. 有了开发环境和生产环境的配置区分了. 详细的以后慢慢了解了. 貌似增强了很多功能. 从 phpinfo() 里看出来的. 放出一张刚测试出的phpinfo()截图, 后面张贴一下本次编译的命令记录. 看看编译的一堆命令. 有需要的朋友可以拿去参考一下. sudo apt-get install build-esse

  • ubuntu 编译安装php 5.3.3+memcache的方法

    //编译安装php 5.3.3 由于php5.3.X已经自带了php-fpm所以不需要打补丁 # sudo ./configure --prefix=/usr/local/php-5.3.3 --with-mcrypt --with-gettext --with-mysql --with-gd --with-jpeg-dir --with-png-dir --with-curl --with-freetype-dir --enable-gd-native-ttf --enable-mbstrin

  • Ubuntu 14.04 安装 MongoDB 及 PHP MongoDB Driver详细介绍

    说明 MongoDB 是非常有名的 NOSQL 数据库,下面是 Ubuntu 14.04 下 MongoDB 的安装, 同时还有针对 PHP 的配置 (driver 安装等), 此方法适用于 Homestead. 安装 MongoDB 1. 添加源 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 echo 'deb http://downloads-distro.mongodb.org/repo

  • Ubuntu下安装PHP的mongodb扩展操作命令

    在 https://pecl.php.net/package/mongo 下载 PHP的mongodb扩展的源码 复制代码 代码如下: $ wget -c https://pecl.php.net/get/mongo-1.6.9.tgz $ tar zxvf mongo-1.6.9.tgz $ cd mongo-1.6.9 $ phpize $ ./configure $ make all $ make test $ sudo make install

  • 在 Ubuntu 16.04 为 Nginx 服务器安装 LEMP 环境(MariaDB,PHP 7 并支持 HTTP 2.0)

    LEMP 是个缩写,代表一组软件包(L:Linux OS,E:Nginx 网络服务器,M:MySQL/MariaDB 数据库和 P:PHP 服务端动态编程语言),它被用来搭建动态的网络应用和网页. (LCTT 译注:为何采用 LEMP 而不是 LNMP 的缩写?据 https://lemp.io/ 的解释:Nginx 的发音是 Engine-X,重要的发音而不是首字母,而且 LEMP 实际上是可读的,而 LNMP 看起来只是字母表.) 这篇教程会教你怎么在 Ubuntu 16.04 的服务器上安

  • Ubuntu 16.04源码编译安装PHP 5.6.29的教程

    1. 下载地址:http://www.php.net/downloads.php 2.解压 tar -zxvf PHP-5.6.29.tar.gz 3.配置 ./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache/bin/apxs 注意:这里的-with-apxs2=/usr/local/apache/bin/apxs选项,其中apxs是在安装Apache时产生的,路径根据实际情况设置.apxs是一个为Apache HTT

随机推荐