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

这篇文章主要介绍了在Mac上编译安装PHP7的开发环境的相关资料,需要的朋友可以参考下,今天看到鸟哥发微博说php7 beta1测试版发布了,于是赶紧就去抢先下载,把自己的开发环境也升级到PHP7去,话不多少,下面就一起来搞起吧。。。

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

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

php7 beta1

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

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

tar -zxvf php-7.0.0beta1.tar.gz

cd php-7.0.0beta1

建立配置:

  1. ./buildconf --force
  2. ./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版本,所以错误会少一点,不过大家过程中有什么错误的话,直接贴出来大家一起研究了。

编译

  1. make
  2. #
  3. Generating phar.php
  4. Generating phar.phar
  5. PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
  6. clicommand.inc
  7. directorygraphiterator.inc
  8. directorytreeiterator.inc
  9. invertedregexiterator.inc
  10. pharcommand.inc
  11. phar.inc
  12. Build complete.
  13. Don't forget to run 'make test'.
  14. #

这里会持续一段时间,一般是不会出现什么错误的,除非你人品的问题了。。。

安装,代码如下:

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,最后如下:

  1. sudo vim /etc/apache2/httpd.conf
  2. ...
  3. #LoadModule php5_module libexec/apache2/libphp5.so
  4. LoadModule php7_module /usr/libexec/apache2/libphp7.so
  5. ...

重启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即可,相关内容如下:

  1. #httpd.conf改动
  2. ...
  3. <IfModule php5_module>
  4. Include /private/etc/apache2/other/php5.conf
  5. </IfModule>
  6. <IfModule php7_module>
  7. Include /private/etc/apache2/other/php7.conf
  8. </IfModule>
  9. #Include /private/etc/apache2/other/*.conf
  10. ...
  11. #php7.conf内容
  12. <IfModule php7_module>
  13. AddType application/x-httpd-php .php
  14. AddType application/x-httpd-php-source .phps
  15. <IfModule dir_module>
  16. DirectoryIndex index.html index.php
  17. </IfModule>
  18. </IfModule>

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

sudo apachectl restart

久违的画面出现了。。。