在openSUSE42.1下编译安装PHP7 的方法


Posted in PHP onDecember 24, 2015

首先推荐一篇文章PHP 7 Release Date Arrived: Will Developers Adopt PHP 7? - PHP Classes blog。

里面说到是否会去使用PHP7,就个人而言,我是毫不犹豫地使用的,但是生产环境就不是我说了算,所以只能自己在自己的开发环境里更新PHP的版本。那么,你呢?

笔者使用的是Linux的openSUSE42.1发行版,Yast里面还没有PHP7的安装包,于是乎只能自己手动编译安装了。作为一个PHP开发者,我是非常希望能够学会编译安装PHP7的,之前试过几次,但是每次安装都要上网找各种资料,于是乎,这次安装成功后就想把自己的安装过程以及遇到的问题记录下来,方便以后查阅和分享给需要的人。

下载源码并解压

进入正题,要编译安装PHP7,首先当然要下载PHP7的源码。你可以到github上clone,也可以到PHP官网下载。下载后解压到 /usr/local/src 目录,并将目录重命名为php7。进入目录。

配置编译参数

生成配置文件

./buildconf

配置

./configure \
--prefix=/usr/local/php7 \
--exec-prefix=/usr/local/php7 \
--bindir=/usr/local/php7/bin \
--sbindir=/usr/local/php7/sbin \
--includedir=/usr/local/php7/include \
--libdir=/usr/local/php7/lib/php \
--mandir=/usr/local/php7/php/man \
--with-config-file-path=/usr/local/php7/etc \
--with-mysql-sock=/var/run/mysql/mysql.sock \
--with-mcrypt=/usr/include \
--with-mhash \
--with-openssl \
--with-mysqli=shared,mysqlnd \
--with-pdo-mysql=shared,mysqlnd \
--with-gd \
--with-iconv \
--with-zlib \
--enable-zip \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-curl \
--with-jpeg-dir \
--with-freetype-dir \
--enable-opcache \
--enable-fpm \
--disable-cgi \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--without-gdbm \
--disable-fileinfo

参数说明

prefix PHP7安装的根目录

with-config-file-path PHP7的配置文件目录

执行完上面的配置命令后的结果如下图所示:

 在openSUSE42.1下编译安装PHP7 的方法

 执行上面命令的过程中会遇到一些依赖缺少的提示,下面列出我遇到的依赖问题:

错误:

configure: error: xml2-config not found. Please check your libxml2 installation.

解决:

zypper install libxml2-devel

错误:

configure: WARNING: unrecognized options: --with-mysql

解决:

取消这个选项,这个选项是不存在的

错误:

configure: error: jpeglib.h not found.

解决:

zypper install libjpeg-devel

错误:

configure: error: mcrypt.h not found. Please reinstall libmcrypt.

解决:

zypper install libmcrypt-devel

错误:

checking for recode support... yes
configure: error: Can not find recode.h anywhere under /usr /usr/local /usr /opt.

解决:

zypper install librecode-devel

总的来说,在配置的时候遇到没有的就打开Yast搜一下,如果有的话就安装,然后重新编译看还需要那些,如果在Yast找不到,那就上网找一下Google。

编译和安装PHP7

make && make install

其中,make之后可以选择make test。只是一个可选步骤,不执行不知道有什么问题,不过笔者暂时还没遇到。

查看安装成功后的PHP7目录

编译安装成功后,查看PHP7的安装目录`ls /usr/local/php7`:

在openSUSE42.1下编译安装PHP7 的方法

设置PHP7的配置文件

cp /usr/local/src/php7/php.ini-production /usr/local/php7/etc/php.ini
cp /usr/local/src/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf 

设置环境变量

在/etc/profile 文件的最后一行加上

export PATH=/usr/local/php7/bin:/usr/local/php7/sbin:$PATH

然后执行 source /etc/profile 

设置PHP日志目录和php-fpm进程文件(php-fpm.sock)目录

mkdir -p /var/log/php-fpm/ && mkdir -p /var/run/php-fpm && cd /var/run/ && chown -R nginx:nginx php-fpm

将PHP设置为开机启动

chmod +x /etc/init.d/php-fpm
chkconfig php-fpm on

可以用chkconfig命令查看开机启动服务列表。

启动PHP服务

service php-fpm start

通过ps aux | grep 'php'查看PHP是否启动成功 

在openSUSE42.1下编译安装PHP7 的方法

至此,PHP7就安装成功了,你也开始使用PHP7吧!

以上所述给大家介绍了在openSUSE42.1下编译安装PHP7 的方法,希望大家喜欢。

PHP 相关文章推荐
php Memcache 中实现消息队列
Nov 24 PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
Mar 23 PHP
php+mysql删除指定编号员工信息的方法
Jan 14 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 PHP
PHP输入输出流学习笔记
May 12 PHP
PHP实现json_decode不转义中文的方法
May 20 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
PHP验证类的封装与使用方法详解
Jan 10 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
Feb 15 PHP
PHP单文件上传原理及上传函数的封装操作示例
Sep 02 PHP
php+layui数据表格实现数据分页渲染代码
Oct 26 PHP
PHP mkdir创建文件夹实现方法解析
Nov 13 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
Dec 24 #PHP
PHP实现文件上传和多文件上传
Dec 24 #PHP
纯PHP代码实现支付宝批量付款
Dec 24 #PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
Dec 24 #PHP
4种PHP异步执行的常用方式
Dec 24 #PHP
php实现异步数据调用的方法
Dec 24 #PHP
PHP下SSL加密解密、验证、签名方法(很简单)
Jun 28 #PHP
You might like
PHP初学者头疼问题总结
2006/10/09 PHP
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
php 中的4种标记风格介绍
2012/05/10 PHP
微信公众号判断用户是否已关注php代码解析
2016/06/24 PHP
php的socket编程详解
2016/11/20 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
php xhprof使用实例详解
2019/04/15 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
nodejs个人博客开发第五步 分配数据
2017/04/12 NodeJs
node的process以及child_process模块学习笔记
2018/03/06 Javascript
webpack 打包压缩js和css的方法示例
2018/03/20 Javascript
vue中子组件传递数据给父组件的讲解
2019/01/27 Javascript
vue组件命名和props命名代码详解
2019/09/01 Javascript
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
vue3.0生命周期的示例代码
2020/09/24 Javascript
Python 错误和异常代码详解
2018/01/29 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
西班牙英格列斯百货法国官网:El Corte Inglés法国
2017/07/09 全球购物
学生党员思想汇报
2013/12/28 职场文书
公务员转正鉴定材料
2014/02/11 职场文书
我的小天地教学反思
2014/04/30 职场文书
大学运动会通讯稿
2015/07/18 职场文书
岗位聘任协议书
2015/09/21 职场文书
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS
Elasticsearch 基本查询和组合查询
2022/04/19 Python