在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调用数据库的存贮过程!
Oct 09 PHP
php getsiteurl()函数
Sep 05 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
Sep 12 PHP
PHP 第二节 数据类型之数值型
Apr 28 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
Nov 19 PHP
ThinkPHP独立分组使用的注意事项
Nov 25 PHP
PHP使用适合阅读的格式显示文件大小的方法
Mar 05 PHP
PHP数组操作――获取数组最后一个值的方法
Apr 14 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
Mar 23 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
Jul 03 PHP
PHP文件系统管理(实例讲解)
Sep 19 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/07/25 PHP
php实现文件下载实例分享
2014/06/02 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
2017/09/30 PHP
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
Vue v2.4中新增的$attrs及$listeners属性使用教程
2018/01/08 Javascript
详解node登录接口之密码错误限制次数(含代码)
2019/10/25 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
Python中的pack和unpack的使用
2018/03/12 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
应届生法律求职信
2013/10/22 职场文书
化学实验员岗位职责
2013/12/28 职场文书
七年级英语教学反思
2014/01/15 职场文书
春节联欢会主持词
2014/03/24 职场文书
毕业生工作求职信
2014/06/30 职场文书
八一建军节演讲稿
2014/09/10 职场文书
教师教育教学随笔
2015/08/15 职场文书
优秀班干部主要事迹材料
2015/11/04 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python