记 Mac Pro 系统升级后,编译安装 PHP-5.6.28 / PHP-7.0 报错修复过程
买 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 多版本的 共存 和 切换
延伸阅读:
Mac Pro 编译安装 PHP 5.6.21 及 问题汇总
记 Mac 升级后,编译安装 PHP-5.6.28 / PHP-7.0 报错修复过程
记 Mac Pro 系统升级后,编译安装 PHP-5.6.28 / PHP-7.0 报错修复过程的更多相关文章
- mac下使用opencv编译安装新模块contrib
opencv-4.0.1 opencv_contrib-4.0.1 提供ippicv下载链接: https://pan.baidu.com/s/1OIJRUqPqAtpMetku8qX36w cont ...
- TensorFlow Android Camera Demo 使用android studio编译安装和解决Execution failed for task ':buildNativeBazel'报错
可以参考官网:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android#android-stud ...
- 打开安装 好的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 ...
- Mac Pro 软件安装/个性化配置 汇总
苹果产品维修 一.Spotlight 搜索程序和文档 Spotlight是最最常用的东西, 类似Windows开始菜单中的搜索. 可以用来搜索文档,也可以搜索本机的程序, 这样可以快速启动. 点击右 ...
- [实践] ubuntu下编译安装ambari
ambari是一个Hadoop套件的管理工具,可以方便部署.管理及监控.最初开发时使用的就是RH系的Linux,只支持RHEL.CentOS5/6.OEL.SLES,暂不支持Ubuntu:可我的需求就 ...
- Linux下编译安装Apache Http Server
Linux下编译安装Apache Http Server [TOC] 1.下载httpd-2.4.12.tar.bz2 wget http://mirror.bit.edu.cn/apache/htt ...
- Centos6.5下编译安装ACE6.0
ACE在Linux下的编译安装步骤(CentOS6.5 64Bit) Linux平台安装(CentOS6.5 64bit) 1, 下载ACE软件包,上传至Linux服务器(假设目录为/opt/ace, ...
- CentOS 6.5 简单编译安装Nginx
一.准备工作 现在官网下载需要的nginx版本:http://nginx.org/en/download.html 从linux服务器上下载,或者本地电脑下载导入服务都行 这里我选择安装的是nginx ...
- Centos6.4 编译安装 nginx php
一. 准备依赖库 安装make: yum -y install gcc automake autoconf libtool make 安装g++: yum install gcc gcc-c++ 二. ...
随机推荐
- 操作系统IO模型
操作系统IO模型 声明:如下内容是根据APUE和mycat两本著作中关于I/O模式的一些内容加上自己的一些理解整理而成,仅供学习使用. 本节内容 UNIX下可用的五种I/O模型 三种I/O模型 Rea ...
- ie与火狐中常见的一些兼容问题
1. document.form.item 问题 (1)现有问题: 现有代码中存在许多 document.formName.item("itemName") 这样的语句,不能在Fi ...
- CSS背景图像位置属性background-position百分比详解
百分比值同关键字很接近,但其操作方式不一样.用百分比值来居中一幅背景图像,也很简单: body { background-image;url(beijing.gif); background-repe ...
- 从A文件拿B文件的某一个值
- Beta阶段第二次Scrum Meeting
此文章已于 2:51:42 2016/12/8 重新发布到 buaa_overwatch Beta阶段第二次Scrum Meeting 情况简述 BETA阶段第二次Scrum Meeting 敏捷开发 ...
- [bigdata] Spark RDD整理
1. RDD是什么RDD:Spark的核心概念是RDD (resilient distributed dataset),指的是一个只读的,可分区的弹性分布式数据集,这个数据集的全部或部分可以缓存在内存 ...
- <<< Js中实现对字符串的截取
1.函数split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例:var Data = "1/234/5678/9"; var str = shuju.split( ...
- 搭建FTP服务器
yum install vsftpd -yyum install pam* db4* --skip-broken –y 创建并生成vsftpd 数据库文件vi /etc/vsftpd/ftpusers ...
- 图解c/c++多级指针与“多维”数组
声明:本文为原创博文,如有转载,请注明出处.若本文有编辑错误.概念错误或者逻辑错误,请予以指正,谢谢. 指针与数组是C/C++编程中非常重要的元素,同时也是较难以理解的.其中,多级指针与“多维”数组更 ...
- C# Httpclient编程
今天研究了一天C#如何添加cookie到httpcient里面,从而发请求时,能把cookie作为头部发出,最后发现根本加不进去. Httpclient的cookie是来自上一个请求的响应,httpc ...