在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 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
May 16 PHP
php 短链接算法收集与分析
Dec 30 PHP
解析PHP获取当前网址及域名的实现代码
Jun 23 PHP
php获取目录所有文件并将结果保存到数组(实例)
Oct 25 PHP
ThinkPHP模板自定义标签使用方法
Jun 26 PHP
thinkphp模板输出技巧汇总
Nov 24 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
PHP连接数据库实现注册页面的增删改查操作
Mar 27 PHP
微信公众平台DEMO(PHP)
May 04 PHP
PHP 文件上传后端处理实用技巧方法
Jan 06 PHP
Redis构建分布式锁
Mar 28 PHP
windows 2008r2+php5.6.28环境搭建详细过程
Jun 18 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 xml实例 留言本
2009/03/20 PHP
php获取文件内容最后一行示例
2014/01/09 PHP
php如何连接sql server
2015/10/16 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
JavaScript+CSS控制打印格式示例介绍
2014/01/07 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
如何使用JS在HTML中自定义字符串格式化
2017/07/20 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
Vue之mixin全局的用法详解
2018/08/22 Javascript
深入理解Vue 的钩子函数
2018/09/05 Javascript
Vue程序调试的方法
2019/06/17 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
分享Python字符串关键点
2015/12/13 Python
Python爬虫之xlml解析库(全面了解)
2017/08/08 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
使用Python实现 学生学籍管理系统
2019/11/26 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
python中id函数运行方式
2020/07/03 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
美国翻新电子产品商店:The Store
2019/10/08 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
仓库管理专业个人的自我评价
2013/12/30 职场文书
毕业晚会主持词
2014/03/24 职场文书
中学生教师节演讲稿
2014/09/03 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
同意报考证明
2015/06/17 职场文书
2016年校长新年寄语
2015/08/17 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
用Python实现Newton插值法
2021/04/17 Python
html实现弹窗的实例
2021/06/09 HTML / CSS
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript