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
phpmyadmin导入(import)文件限制的解决办法
Dec 11 PHP
php 解压rar文件及zip文件的方法
May 05 PHP
THINKPHP项目开发中的日志记录实例分析
Dec 01 PHP
8个PHP程序员常用的功能汇总
Dec 18 PHP
php算法实例分享
Jul 14 PHP
PHP命名空间和自动加载类
Apr 03 PHP
php对接java现实加签验签的实例
Nov 25 PHP
Zend Framework前端控制器用法示例
Dec 11 PHP
php apache开启跨域模式过程详解
Jul 08 PHP
php和js实现根据子网掩码和ip计算子网功能示例
Nov 09 PHP
aec加密 php_php aes加密解密类(兼容php5、php7)
Mar 14 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 UTF-8、Unicode和BOM问题
2010/05/18 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
网页自动跳转代码收集
2009/09/27 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
js实现圆盘记速表
2015/08/03 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
Python实现的数据结构与算法之链表详解
2015/04/22 Python
python字典的常用操作方法小结
2016/05/16 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
Python django搭建layui提交表单,表格,图标的实例
2019/11/18 Python
Python+opencv+pyaudio实现带声音屏幕录制
2019/12/23 Python
Matplotlib scatter绘制散点图的方法实现
2020/01/02 Python
anaconda升级sklearn版本的实现方法
2021/02/22 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
HTML5实现音频和视频嵌入的方法
2018/08/22 HTML / CSS
小饰品店的创业计划书范文
2013/12/28 职场文书
经理管理专业毕业自荐书范文
2014/02/12 职场文书
工业设计专业自荐书
2014/06/05 职场文书
优秀应届本科生求职信
2014/07/19 职场文书
兽医医药专业求职信
2014/07/27 职场文书
店面出租协议书范本
2014/11/28 职场文书
初中差生评语
2014/12/29 职场文书
人事主管岗位职责
2015/02/04 职场文书
红白喜事主持词
2015/07/06 职场文书
MongoDB 常用的crud操作语句
2021/06/20 MongoDB
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL