找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1757|回复: 0
打印 上一主题 下一主题

Ubuntu 16.04下安装PHP 7过程详解

[复制链接]

2617

主题

2617

帖子

7789

积分

论坛元老

Rank: 8Rank: 8

积分
7789
跳转到指定楼层
楼主
发表于 2018-2-14 05:27:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            前言
最近由于换了硬盘重装了(升级)系统到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_1LD_LIBRARY_PATH
    export PATH=/opt/oracle/instantclient_12_1PATH
    # 最后source一下,使配置生效
    source /etc/profile
    下载PHP源码
    首先我们要确定已经安装的PHP的版本,由于使用apt-get安装,版本可能不是PHP官网放的最新的版本,使用下面的 命令既可查看
    php -v
    发现我的安装的版本是7.0.4,那么我们对应的下载PHP-7.0.4版本的源码。
    两种方式可以下载到源码。
    [ol]
      
  • 从官网下载源码包
      
  • 从GitHub 仓库 clone
      
    [/ol]
    官网下载源码很简单,打开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 linux 安装 PHP5.3.0的命令
  • ubuntu 编译安装php 5.3.3+memcache的方法
  • ubuntu+php环境下的Memcached 安装方法
  • Ubuntu+Nginx+Mysql+Php+Zend+eaccelerator安装配置文字版
  • 基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
  • Ubuntu12下编译安装PHP5.3开发环境
  • Ubuntu下安装PHP的mongodb扩展操作命令
  • 在 Ubuntu 16.04 为 Nginx 服务器安装 LEMP 环境(MariaDB,PHP 7 并支持 HTTP 2.0)
  • Ubuntu 14.04  安装 MongoDB 及 PHP MongoDB Driver详细介绍
  • Ubuntu 16.04源码编译安装PHP 5.6.29的教程
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端