买 Mac Pro 的时候,系统为 OS X 10.11.5,编译 PHP-5.6.21 的时候,也遇到一些坑,安装过程记录如下:

Mac Pro 编译安装 PHP 5.6.21 及 问题汇总

后来,系统升级为 OS X 10.11.6,再后来,打算升级  PHP 至 5.6.28,报错:

报错1

./configure 时报错

conftest.c:9:10: fatal error: 'ac_nonexistent.h' file not found

解决

再次升级到最新的苹果系统 OS Sierra 10.12.1

报错2

configure: error: Cannot find libz

试着解决

执行 sudo brew install libz,继续报错:

报错3

Error: No available formula with the name "libz"
==> Searching for similarly named formulae...
These similarly named formulae were found:
libzdb libzip libzzip
To install one of them, run (for example):
brew install libzdb
==> Searching taps...
Error: No formulae found in taps.
==> You haven't updated Homebrew in a while.
A formula for libz might have been added recently.
Run `brew update` to get the latest Homebrew updates!

按照提示,执行 brew update,继续报错:

报错4

/usr/local/Library/brew.sh: line 32: /usr/local/Library/ENV/scm/git: No such file or directory
/usr/local/Library/brew.sh: line 32: /usr/local/Library/ENV/scm/git: No such file or directory
[etc..]
Error: update-report should not be called directly!

参考国外的网站,homebrew-error-update-report-should-not-be-called-directly

解决

cd /usr/local; git reset --hard origin/master; brew update

继续执行,brew update,继续报错:

报错5

Error: /usr/local must be writable!

执行 sudo brew update,继续报错:

报错6

Error: Cowardly refusing to 'sudo brew update'
You can use brew with sudo, but only if the brew executable is owned by root.
However, this is both not recommended and completely unsupported so do so at
your own risk.

好吧,修改 /usr/local/ 文件夹的权限(用户)

sudo chown -R $(whoami) /usr/local

再次执行 brew update,这条语句没报错!

继续解决 Cannot find libz 的问题,执行: brew install libz,报错

报错7

Error: No available formula with the name "libz" 
==> Searching for similarly named formulae...
These similarly named formulae were found:
libzdb                             libzip                             libzzip
To install one of them, run (for example):
  brew install libzdb
==> Searching taps...
Error: No formulae found in taps.

后来,找到一个帖子,Cannot find libz when install php56,找到解决方案

解决

执行

xcode-select --install
brew upgrade

PHP-5.6 继续执行,./configure ,没报错!

./configure \
--prefix=/usr/local/php/php-5.6 \
--with-config-file-path=/usr/local/php/php-5.6/etc \
--with-openssl=/usr/local/opt/openssl \
--with-zlib \
--with-bz2 \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-gettext \
--with-mhash \
--with-freetype-dir \
--with-mcrypt \
--with-iconv \
--with-curl \
--with-xmlrpc \
--with-mysql \
--with-pdo-mysql \
--with-mysqli \
--enable-calendar \
--enable-pdo \
--enable-zip \
--enable-mbstring \
--enable-mbregex \
--enable-bcmath \
--enable-soap \
--enable-sockets \
--enable-ftp \
--enable-gd-native-ttf \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-xml \
--enable-pcntl \
--enable-fpm \
--enable-opcache \
--without-pear

PHP-7.0

./configure \
--prefix=/usr/local/php/php-7.0 \
--with-config-file-path=/usr/local/php/php-7.0/etc \
--with-openssl=/usr/local/opt/openssl \
--with-zlib \
--with-bz2 \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-gettext \
--with-mhash \
--with-freetype-dir \
--with-mcrypt \
--with-iconv \
--with-curl \
--with-xmlrpc \
--with-pdo-mysql \
--with-mysqli \
--enable-calendar \
--enable-pdo \
--enable-zip \
--enable-mbstring \
--enable-mbregex \
--enable-bcmath \
--enable-soap \
--enable-sockets \
--enable-ftp \
--enable-gd-native-ttf \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-xml \
--enable-pcntl \
--enable-fpm \
--enable-opcache \
--without-pear

执行 make 的时候会报错,参考 以前的文章,即可解决:

Mac Pro 编译安装 PHP 5.6.21 及 问题汇总

执行 make 操作的时候,又报错:

/usr/lib/libiconv.dylib /usr/local/lib/libiconv.dylib -o sapi/cli/php
ld: can't write output file: sapi/cli/php for architecture x86_64

提示不能写入,应该是权限的问题,进入源码包的,查看文件 ./sapi/cli/php 文件,所属用户为 root,果然是权限问题,执行 make 的时候,sudo 一下,即 sudo make,大功告成。


按照同样的方式,编译安装了 PHP-7.0,并实现了 PHP 多版本的 共存 和 切换

如何 实现PHP多版本的 共存 和 切换?

延伸阅读:

Mac Pro 编译安装 PHP 5.6.21 及 问题汇总

记 Mac 升级后,编译安装 PHP-5.6.28 / PHP-7.0 报错修复过程

记 Mac Pro 系统升级后,编译安装 PHP-5.6.28 / PHP-7.0 报错修复过程的更多相关文章

  1. mac下使用opencv编译安装新模块contrib

    opencv-4.0.1 opencv_contrib-4.0.1 提供ippicv下载链接: https://pan.baidu.com/s/1OIJRUqPqAtpMetku8qX36w cont ...

  2. TensorFlow Android Camera Demo 使用android studio编译安装和解决Execution failed for task ':buildNativeBazel'报错

    可以参考官网:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android#android-stud ...

  3. 打开安装 好的Microsoft Dynamics CRM 4.0 报错误为 Caller does not have enough privilege to set CallerOriginToken to the specified value 的解决办法

    If you installed CRM 4.0 on box where you also have SQL and used a domain account as service account ...

  4. Mac Pro 软件安装/个性化配置 汇总

    苹果产品维修 一.Spotlight 搜索程序和文档 Spotlight是最最常用的东西, 类似Windows开始菜单中的搜索.  可以用来搜索文档,也可以搜索本机的程序, 这样可以快速启动. 点击右 ...

  5. [实践] ubuntu下编译安装ambari

    ambari是一个Hadoop套件的管理工具,可以方便部署.管理及监控.最初开发时使用的就是RH系的Linux,只支持RHEL.CentOS5/6.OEL.SLES,暂不支持Ubuntu:可我的需求就 ...

  6. Linux下编译安装Apache Http Server

    Linux下编译安装Apache Http Server [TOC] 1.下载httpd-2.4.12.tar.bz2 wget http://mirror.bit.edu.cn/apache/htt ...

  7. Centos6.5下编译安装ACE6.0

    ACE在Linux下的编译安装步骤(CentOS6.5 64Bit) Linux平台安装(CentOS6.5 64bit) 1, 下载ACE软件包,上传至Linux服务器(假设目录为/opt/ace, ...

  8. CentOS 6.5 简单编译安装Nginx

    一.准备工作 现在官网下载需要的nginx版本:http://nginx.org/en/download.html 从linux服务器上下载,或者本地电脑下载导入服务都行 这里我选择安装的是nginx ...

  9. Centos6.4 编译安装 nginx php

    一. 准备依赖库 安装make: yum -y install gcc automake autoconf libtool make 安装g++: yum install gcc gcc-c++ 二. ...

随机推荐

  1. 【Python数据分析】工作日发文章比周末发文章访问量高?

    前言 看前面有位朋友分析了一下每天某个时间发文章的访问量区别,以讨论非系统性因素对文章访问量的影响.之所以进一步讨论工作日和周末发文对文章访问量的影响,一是觉得很有意思,二是毕业设计与此有很大关系,三 ...

  2. HDU 1729 Stone Game【SG函数】

    以下转载至:长春理工大学赵小舟博弈论ppt 题目大意: 1.有n个盒子,每个盒子都有它的容量s 2.在游戏开始时,每个盒子里都有一些石子 3.双方轮流进行游戏,向一个盒子投入n个石子,其中n不能大于当 ...

  3. Java程序设计之最大公约数和最小公倍数

    题目:输入两个正整数number1和number2,求其最大公约数和最小公倍数. 算法:较大数和较小数取余,较小数除余数,一直到余数为0时,为最大公约数(辗转相除法):最大公倍数numbe1*numb ...

  4. [No00006B]方便的网络下载工具wget 可下载网站目录下的所有文件(可下载整个网站)

    wget是linux下命令行的下载工具,功能很强大,它能完成某些下载软件所不能做的,比如如果你想下载一个网页目录下的所有文件,如何做呢?网络用户有时候会遇到需要下载一批文件的情况,有时甚至需要把整个网 ...

  5. c语言中的scanf在java中应该怎么表达,Scanner类。

    1 java是面向对象的语言 它没有像C语言中的scanf()函数,但是它的类库中有含有scanf功能的函数 2 java.util包下有Scanner类 Scanner类的功能与scanf类似 3 ...

  6. Node webkit启动最大化窗口

    <!DOCTYPE html> <html> <head>     </head> <body>     <p style=" ...

  7. 最新JavaScript、Ajax典藏级学习资料下载分类汇总 (2011年12月21日更新)

    其他网站开发相关资料            超强HTML和xhtml,CSS精品学习资料下载汇总                                               最新htm ...

  8. HTML错误码

    1XX 信息性状态码 2XX 成功状态码 3XX 重定向状态码 4XX 客户端错误状态码 5XX 服务器错误状态码

  9. ubuntu14.04为安装fcitx卸载ibus后出现system setting (系统设置)中图标消失的问题

    最近在系统为ubuntu14.04原版中,安装fictx.按照以往的经验应先把ibus卸载干净,否则可能会有冲突.因此惯性思维驱使,先卸载ibus,然后安装fcitx,但是问题出现了,system s ...

  10. linux vi基本操作

    在Linux下,可以键入vimtutor命令,有一个包含实操的vim教程. 1.VI的三种命令模式  1)Command(命令)模式,用于输入命令:  2)Insert(插入)模式,用于插入文本:  ...