在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 递归效率分析
Nov 24 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 PHP
深入PHP许愿墙模块功能分析
Jun 25 PHP
PHP上传图片进行等比缩放可增加水印功能
Jan 13 PHP
PHP中的Memcache详解
Apr 05 PHP
PHP判断网络文件是否存在的方法
Mar 12 PHP
深入解析PHP中SESSION反序列化机制
Mar 01 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
Jun 21 PHP
PHP简单实现防止SQL注入的方法
Mar 13 PHP
laravel获取不到session的三种解决办法【推荐】
Sep 16 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
Jan 07 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
对javascript和select部件的结合运用
2006/10/09 PHP
PHP数组内存耗用太多问题的解决方法
2010/04/05 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
PHP闭包(Closure)使用详解
2013/05/02 PHP
php实现天干地支计算器示例
2014/03/14 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
2017/02/24 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
react build 后打包发布总结
2018/08/24 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
使用httplib模块来制作Python下HTTP客户端的方法
2015/06/19 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
Tensorflow使用Anaconda、pycharm安装记录
2020/07/29 Python
了解一下python内建模块collections
2020/09/07 Python
python requests库的使用
2021/01/06 Python
使用Django的JsonResponse返回数据的实现
2021/01/15 Python
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
澳大利亚在线床零售商:Bedworks
2020/09/01 全球购物
街道党工委党的群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书