在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中文件上传的安全问题
Oct 09 PHP
数字转英文
Dec 06 PHP
php几个预定义变量$_SERVER用法小结
Nov 07 PHP
php更新mysql后获取改变行数的方法
Dec 25 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
Feb 10 PHP
php通过rmdir删除目录的简单用法
Mar 18 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
Dec 21 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
Mar 21 PHP
thinkphp框架下404页面设置 仅三步
May 14 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
Mar 12 PHP
Laravel如何实现适合Api的异常处理响应格式
Jun 14 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示例代码
2016/08/05 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
Ajax::prototype 源码解读
2007/01/22 Javascript
javascript英文日期(有时间)选择器
2007/05/02 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
js拦截alert对话框另类应用
2013/01/16 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
详解vue-cli官方脚手架配置
2018/07/20 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
express框架下使用session的方法
2019/07/31 Javascript
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
bpython 功能强大的Python shell
2016/02/16 Python
python 根据pid杀死相应进程的方法
2017/01/16 Python
Python使用QQ邮箱发送Email的方法实例
2017/02/09 Python
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
服装公司总经理岗位职责
2013/11/30 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
公务员中国梦演讲稿
2014/08/19 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
观后感的写法
2015/06/19 职场文书
国家助学金受助感言
2015/08/01 职场文书
六年级作文之关于梦
2019/10/22 职场文书
OpenCV-Python实现人脸美白算法的实例
2021/06/11 Python
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server