在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 相关文章推荐
dedecms中常见问题修改方法总结
Mar 21 PHP
php 方便水印和缩略图的图形类
May 21 PHP
php 正则表达式小结
Aug 31 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
Nov 09 PHP
深入PHP FTP类的详解
Jun 13 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
Jun 24 PHP
Linux编译升级php的详细方法
Nov 04 PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 PHP
利用php下载xls文件(自己动手写的)
Apr 18 PHP
PHP实现抓取HTTPS内容
Dec 01 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
Oct 28 PHP
php中array_fill函数的实例用法
Mar 02 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之变量、常量学习笔记
2008/03/27 PHP
php pack与unpack 摸板字符字符含义
2009/10/29 PHP
PHP之生成GIF动画的实现方法
2013/06/07 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
javascript预加载图片、css、js的方法示例介绍
2013/10/14 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
python列表操作之extend和append的区别实例分析
2015/07/28 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
Python中的time模块与datetime模块用法总结
2016/06/30 Python
Python中查看文件名和文件路径
2017/03/31 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
2019/06/28 Python
Rockport乐步美国官网:风靡美国的白宫鞋
2016/11/24 全球购物
请用用Java代码写一个堆栈
2012/01/26 面试题
StringBuilder和String的区别
2015/05/18 面试题
总经理工作职责范文
2014/03/14 职场文书
乡文化站暑期培训方案
2014/08/28 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
Mysql数据库命令大全
2021/05/26 MySQL
python随机打印成绩排名表
2021/06/23 Python