在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 相关文章推荐
php5新改动之短标记启用方法
Sep 11 PHP
11个PHP 分页脚本推荐
Aug 15 PHP
php切割页面div内容的实现代码分享
Jul 31 PHP
PHP获取php,mysql,apche的版本信息示例代码
Jan 16 PHP
php中的路径问题与set_include_path使用介绍
Feb 11 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
Feb 12 PHP
在PHP中使用FastCGI解析漏洞及修复方案
Nov 10 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
yii2控制器Controller Ajax操作示例
Jul 23 PHP
微信公众平台开发(五) 天气预报功能开发
Dec 03 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
thinkPHP5使用Rabc实现权限管理
Aug 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
PHP中的错误处理、异常处理机制分析
2012/05/07 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
PHP导出Excel实例讲解
2016/01/24 PHP
JavaScript图片放大技术(放大镜)实现代码分享
2013/11/14 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
又一款js时钟!transform实现时钟效果
2016/08/15 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
JSONP基础知识详解
2017/03/19 Javascript
vue2.0中goods选购栏滚动算法的实现代码
2017/05/17 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
让你30分钟快速掌握vue3教程
2020/10/26 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
详细探究Python中的字典容器
2015/04/14 Python
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
python中的计时器timeit的使用方法
2017/10/20 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
python3中利用filter函数输出小于某个数的所有回文数实例
2019/11/24 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
CSS3近阶段篇之酷炫的3D旋转透视
2016/04/28 HTML / CSS
网络体系结构及协议的定义
2014/03/13 面试题
创业计划书中包含的9个方面
2013/12/26 职场文书
单位委托书范本(3篇)
2014/09/18 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书