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 相关文章推荐
用PHP和ACCESS写聊天室(三)
Oct 09 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
Aug 02 PHP
PHP 中关于ord($str)>0x80的详细说明
Sep 23 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
Jun 20 PHP
phpphp图片采集后按原路径保存图片示例
Feb 18 PHP
ThinkPHP3.1新特性之G方法的使用
Jun 19 PHP
yii添删改查实例
Nov 16 PHP
WordPress中对访客评论功能的一些优化方法
Nov 24 PHP
PHP读取PPT文件的方法
Dec 10 PHP
php编程每天必学之验证码
Mar 03 PHP
PHP用PDO如何封装简单易用的DB类详解
Jul 30 PHP
PHP操作路由器实现方法示例
Apr 27 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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
php新浪微博登录接口用法实例
2014/12/23 PHP
jquery学习总结(超级详细)
2014/09/04 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
彻底解决 webpack 打包文件体积过大问题
2017/07/07 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
JS通过识别id、value值对checkbox设置选中状态
2020/02/19 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
2020/05/23 Javascript
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
2021/02/07 Javascript
Python计算已经过去多少个周末的方法
2015/07/25 Python
Python之py2exe打包工具详解
2017/06/14 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
Django接收post前端返回的json格式数据代码实现
2019/07/31 Python
用python进行视频剪辑
2020/11/02 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
Subside Sports德国:足球球衣和球迷商品
2019/06/08 全球购物
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
校运会广播稿100字
2014/01/27 职场文书
办理收楼委托书范本
2014/10/09 职场文书
聘任证明怎么写
2015/03/02 职场文书
民间借贷纠纷起诉书
2015/08/03 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
MySQL定时备份数据库(全库备份)的实现
2021/09/25 MySQL
实现GO语言对数组切片去重
2022/04/20 Golang