在Mac上编译安装PHP7的开发环境


Posted in PHP onJuly 28, 2015

今天看到鸟哥发微博说php7 beta1测试版发布了,于是赶紧就去抢先下载,把自己的开发环境也升级到PHP7去,话不多少,下面就一起来搞起吧。。。

首先你得去官网下载php7 beta1的版本

这里由于我是在mac上安装,所以就去下载linux相关的版本,地址也直接附上了

php7 beta1

windows版的官方也有发布详情猛戳:这里

解压安装包,进入源代码目录

tar -zxvf php-7.0.0beta1.tar.gz

cd php-7.0.0beta1

建立配置

./buildconf --force

./configure --prefix=/usr/local/php7 --with-apxs2=/usr/sbin/apxs --enable-fpm --with-fpm-user=www--with-fpm-group=www --with-mysqli --with-pdo-mysql --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr--enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --disable-fileinfo --enable-maintainer-zts

这里列出以下我编译过程遇到的错误和解决办法:

configure: error: Cannot locate header file libintl.h

安装 gettext

sudo brew install gettext

编辑 configure 文件,找到 $PHP_GETTEXT /usr/local /usr 在后面加上gettext的路径

$PHP_GETTEXT /usr/local /usr /usr/local/opt/gettext

重新配置即可【后面参数和上面一样,这里省略了】

我这里可能是因为之前就装过php7 alpha版本,所以错误会少一点,不过大家过程中有什么错误的话,直接贴出来大家一起研究了。

编译

make

#
Generating phar.php
Generating phar.phar
PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
clicommand.inc
directorygraphiterator.inc
directorytreeiterator.inc
invertedregexiterator.inc
pharcommand.inc
phar.inc

Build complete.
Don't forget to run 'make test'.
#
这里会持续一段时间,一般是不会出现什么错误的,除非你人品的问题了。。。

安装

sudo make install

上面的步骤都顺利的话,这一步做起来就是那么的简单了,但是安装过程的信息要记得留意一下,后面配置会需要。。。

命令行测试

/usr/local/php7/bin7 -v

#为了以后事业方便,直接替换系统默认的php命令
#当人你也可以备份一下,我这里直接覆盖算求了。。。

sudo cp /usr/local/php7/bin/ph* /usr/bin/

毫无违和感,运行的如此流程,哈哈!

配置apache

打开apache的配置文件httpd.conf,找到原来的LoadModule php5_module这里,直接注释掉,下面加入LoadModule php7_module /usr/libexec/apache2/libphp7.so,最后如下:

sudo vim /etc/apache2/httpd.conf

...

#LoadModule php5_module libexec/apache2/libphp5.so

LoadModule php7_module /usr/libexec/apache2/libphp7.so

...

重启apache,然后测试一把看看

惊奇的发现,php文件直接输出到浏览器了。。。

感觉是apache不知道要解析php文件了!!!

这里我排查了好久,发现切换成php5版本就没问题,php7就无法解析???

最后才发现apache在解析php的适合是判断了模块的,例如ifModule php5_module这样,在httpd.conf里面找到这一句:Include /private/etc/apache2/other/*.conf,进入到该目录一看,你就明白了...

里面有一个php5.conf文件,那是不是php7的就该对应一个php7的文件呢,于是赶紧复制一份,打开这个文件,看到类似php5_module的字样,直接替换成php7_module即可,相关内容如下:

#httpd.conf改动
...
<IfModule php5_module>
Include /private/etc/apache2/other/php5.conf
</IfModule>

<IfModule php7_module>
Include /private/etc/apache2/other/php7.conf
</IfModule>

#Include /private/etc/apache2/other/*.conf
...

#php7.conf内容
<IfModule php7_module>
  AddType application/x-httpd-php .php
  AddType application/x-httpd-php-source .phps

  <IfModule dir_module>
      DirectoryIndex index.html index.php
  </IfModule>
</IfModule>

最后再次重启apache,测试一下

sudo apachectl restart

久违的画面出现了。。。

在Mac上编译安装PHP7的开发环境

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
PHP中time(),date(),mktime()区别介绍
Sep 28 PHP
PHP伪静态Rewrite设置之APACHE篇
Jul 30 PHP
php延迟静态绑定实例分析
Feb 08 PHP
初识laravel5
Mar 02 PHP
php将数组转换成csv格式文件输出的方法
Mar 14 PHP
学习php设计模式 php实现状态模式
Dec 07 PHP
ThinkPHP中html:list标签用法分析
Jan 09 PHP
功能强大的PHP POST提交数据类
Jul 15 PHP
PHP中Cookie的使用详解(简单易懂)
Apr 28 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
May 06 PHP
PHP接入微信H5支付的方法示例
Oct 28 PHP
详谈PHP编码转换问题
Jul 28 #PHP
php技术实现加载字体并保存成图片
Jul 27 #PHP
php实现向javascript传递数组的方法
Jul 27 #PHP
ThinkPHP模型详解
Jul 27 #PHP
ThinkPHP控制器详解
Jul 27 #PHP
ThinkPHP路由详解
Jul 27 #PHP
ThinkPHP安装和设置
Jul 27 #PHP
You might like
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
基于flush()不能按顺序输出时的解决办法
2013/06/29 PHP
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
2014/12/19 Javascript
如何编写高质量JS代码(续)
2015/02/25 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
Angular中$state.go页面跳转并传递参数的方法
2017/05/09 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
js中的闭包学习心得
2018/02/06 Javascript
vuex 的简单使用
2018/03/22 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
微信小程序开发之tabbar图标和颜色的实现
2018/10/17 Javascript
6行代码实现微信小程序页面返回顶部效果
2018/12/28 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
Angular4.0动画操作实例详解
2019/05/10 Javascript
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
2020/08/07 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
Python操作json数据的一个简单例子
2014/04/17 Python
Python os模块学习笔记
2015/06/21 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
python3实现字符串操作的实例代码
2019/04/16 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
学校献爱心活动总结
2014/07/08 职场文书
关于感恩的演讲稿800字
2014/08/26 职场文书
干部对照检查材料范文
2014/08/26 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
前端学习——JavaScript原生实现购物车案例
2021/03/31 Javascript
Python中字符串对象语法分享
2022/02/24 Python