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 相关文章推荐
BBS(php & mysql)完整版(六)
Oct 09 PHP
PHP gbk环境下json_dencode传送来的汉字
Nov 13 PHP
php中选择什么接口(mysql、mysqli)访问mysql
Feb 06 PHP
PHP中最容易忘记的一些知识点总结
Apr 28 PHP
php中如何防止表单的重复提交
Aug 02 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
Jul 28 PHP
跟我学Laravel之请求(Request)的生命周期
Oct 15 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
Nov 12 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
Jan 16 PHP
php生出随机字符串
Jul 06 PHP
PHP多进程编程实例详解
Jul 19 PHP
php 中self,this的区别和操作方法实例分析
Nov 04 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与已存在的Java应用程序集成
2006/10/09 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
jquery获得下拉框值的代码
2011/08/13 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
更靠谱的H5横竖屏检测方法(js代码)
2016/09/13 Javascript
js判断PC端与移动端跳转
2020/12/24 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
JS实现简易换图时钟功能分析
2018/01/04 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
python实现的一个p2p文件传输实例
2014/06/04 Python
Python实现备份文件实例
2014/09/16 Python
在Python中使用SimpleParse模块进行解析的教程
2015/04/11 Python
使用Python写一个小游戏
2018/04/02 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
Python格式化输出%s和%d
2018/05/07 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
python实现XML解析的方法解析
2019/11/16 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
服装厂厂长职责
2013/12/16 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
bat批处理之字符串操作的实现
2022/03/16 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
2022/04/14 Python
win10拖拽文件时崩溃怎么解决?win10文件不能拖拽问题解决方法
2022/08/14 数码科技