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版本的源码。
两种方式可以下载到源码。
- 从官网下载源码包
- 从github 仓库 clone
官网下载源码很简单,打开的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
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
上一篇: 浅谈fastjson的常用使用方法
推荐阅读
-
Ubuntu 16.04下安装PHP 7过程详解
-
php7安装yar扩展的方法详解
-
php7安装yar扩展的方法详解
-
Ubuntu 16.04下安装PHP 7过程详解
-
PHP7+Nginx的配置与安装教程详解,php7nginx教程详解
-
win7下memCache的安装过程(具体操作步骤)_PHP教程
-
CentOS 7 x64下Apache+MySQL(Mariadb)+PHP56的安装教程详解
-
Ubuntu16.04安装clion全过程及步骤详解
-
PHP7+Nginx的配置与安装教程详解,php7nginx教程详解_PHP教程
-
PHP7+Nginx的配置与安装教程详解 php7 mysql php7安装教程 ubuntu php