CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法


Posted in PHP onDecember 17, 2015

最近试了一下PHP7,在编译和支持MySQL上都遇到一些问题,相信不少同学也同样遇到,所以在这里聊一下这个过程。简单来讲编译PHP7只需要3步:

1、./buildconf --force
2、./configure
3、make && make install

1、3步,都没啥好管的,configure是编译的关键,涉及到PHP对一些库的支持,这里我们使用最小的支持,包括MySQL:

curl
gd
fpm
mysqlnd

之所以把curl和gd拿来说,目的是要搞清楚,这些三方库在编译PHP之前得安装好,可以直接使用yum安装在默认位置,也可以编译安装到指定位置,yum安装后,编译时不用指定库的安装位置,关于安装这些库,可以搜索一下有很多。下面看看基本的configure

./configure --prefix=/apps/php/php7.0 --enable-mbstring --with-curl --with-gd --with-config-file-path=/apps/php/php7.0/etc/ --

enable-fpm --enable-mysqlnd --with-pdo-mysql=mysqlnd

PHP-FPM

关于fpm,相信不用多说,用它来支持PHP是一个比较好的选择,PHP5.3.3开始就已经内置了php-fpm,所以PHP7里当然也有,只需要--enable-fpm一下就可以了

php-fpm参数:

--start 启动
--stop 强制终止
--quit 平滑终止
--restart 重启
--reload 重新平滑加载php的php.ini
--logrotate 重新启用log文件

MySQL支持

重点讲一下这个,因为在它上面花了一点时间,不知道从哪一版本开始,PHP不在希望使用mysql的库来支持mysql的连接,启用了mysqlnd来支持,听说比libmysql要快很多,PHP5.x还可以使用libmysql,PHP7貌似已经取消了支持,编译都没有了--with-mysql参数,只支持--with-mysqli和--with-pdo-mysql,可以通过查看configure的参数来知道:

./configure -help | grep mysql

CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法

可以看到,PHP希望使用mysqlnd来支持MySQL,所以参数可以这样写:

--enable-mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd

mysqlnd是不需要mysql支持的,所以不用先安装好mysql一样可以编译通过,启动php-fpm,查看一下phpinfo,能看到mysqlnd和pdo_mysql表示php已经可以支持mysql了(这里用的是pdo,mysqli同理)

CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法

CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法

几个问题

编译问题:cc: Internal error: Killed (program cc1)

这个问题是第一次遇到,原来是我的阿里云服务器关掉了swap,内存不够用,就报了这个错。 解决办法很简单,configure时加上--disable-fileinfo参数就可以了。

PHP报找不到mysql服务

正如它所说,确实没找到,看看phpinfo中pdo_mysql.default_socket项

CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法

mysql.sock在哪里,再看一下mysql.sock的真正位置,使用命令:ps -ef|grep mysql查看:

CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法

明显不在一个位置上,我的正确位置是:/var/lib/mysql/mysql.sock

所以,修改一下php.ini,找到pdo_mysql.default_socket,改为你的实际位置,重启一下php-fpm,很不幸,虽然php.ini有这个配置,修改后,竟然不行,最好是编译的时候,指定mysql.socket的位置:

--with-mysql-sock=/var/lib/mysql/mysql.sock

如果还不行,可以到/tmp目录下建立一个mysql.sock的软链接:

ln -s /var/lib/mysql/mysql.sock mysql.sock

再重启一次php-fpm,相信已经正常运行了。如果需要PHP支持的库更多,可以再次编译,在configure时把需要的支持加上,就是--with-xxx这中,记得如果是三方的,要先安装这些库才行哦。

PHP 相关文章推荐
杏林同学录(五)
Oct 09 PHP
初级的用php写的采集程序
Mar 16 PHP
浅谈php serialize()与unserialize()的用法
Jun 05 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
Jun 28 PHP
服务器上配置PHP运行环境教程
Feb 12 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
Feb 15 PHP
PHP常用技巧汇总
Mar 04 PHP
Yii2中datetime类的使用
Dec 17 PHP
php使用环形链表解决约瑟夫问题完整示例
Aug 07 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
May 27 PHP
php使用redis的几种常见操作方式和用法示例
Feb 20 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 PHP
通过PHP简单实例介绍文件上传
Dec 16 #PHP
PHP上传文件参考配置大文件上传
Dec 16 #PHP
谈谈 PHP7新增功能
Dec 16 #PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
Dec 16 #PHP
WordPress中邮件的一些修改和自定义技巧
Dec 15 #PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
Dec 15 #PHP
WordPress中用于检索模版的相关PHP函数使用解析
Dec 15 #PHP
You might like
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
2015/01/22 PHP
php获取网页上所有链接的方法
2015/04/03 PHP
php实现的Curl封装类Curl.class.php用法实例分析
2015/09/25 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
2016/04/20 PHP
session 加入redis的实现代码
2016/07/15 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
thinkphp5框架API token身份验证功能示例
2019/05/21 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
[10:05]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD 选手采访
2021/03/11 DOTA
详解Python迭代和迭代器
2016/03/28 Python
在Python中使用gRPC的方法示例
2018/08/08 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
python 列表推导式使用详解
2019/08/29 Python
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
Python字典底层实现原理详解
2019/12/18 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
C#的几个面试问题
2016/05/22 面试题
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
上班打牌检讨书
2014/02/07 职场文书
建筑施工安全责任书
2014/07/24 职场文书
初中作文评语
2014/12/25 职场文书
大学生自我评价范文
2015/03/03 职场文书