在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 短链接算法收集与分析
Dec 30 PHP
浅析Mysql 数据回滚错误的解决方法
Aug 05 PHP
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
May 08 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
Jun 05 PHP
Yii扩展组件编写方法实例分析
Jun 29 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
PHP抓取远程图片(含不带后缀的)教程详解
Oct 21 PHP
php使用file函数、fseek函数读取大文件效率对比分析
Nov 04 PHP
php利用gd库为图片添加水印
Nov 09 PHP
PHP连接MySQL数据库并以json格式输出
May 21 PHP
thinkPHP框架实现多表查询的方法
Jun 14 PHP
php use和include区别总结
Oct 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
东芝TOSHIBA RP-F11电路分析
2021/03/02 无线电
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
PHP会员找回密码功能的简单实现
2016/09/05 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
2019/10/14 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
2020/07/19 PHP
JObj预览一个JS的框架
2008/03/13 Javascript
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
JS与C#编码解码
2013/12/03 Javascript
js点击出现悬浮窗效果不使用JQuery插件
2014/01/20 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
2015/11/30 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
微信小程序 图片绝对定位(背景图片)
2017/04/05 Javascript
angular实现IM聊天图片发送实例
2017/05/08 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
用python实现对比两张图片的不同
2018/02/05 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
浅述python中深浅拷贝原理
2018/09/18 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
学校消防演习方案
2014/02/19 职场文书
节约用水的口号
2014/06/20 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL