编译PHP时指定路径

./configure --prefix=/opt/php/php-5.6
make && make install

这样可以PHP版本就可以安装到一个特别的路径,而不是安装到 /usr/local/ 下。多个版本的 PHP 分别保存在各自的目录中,根据程序需要启动不同的 PHP。

/usr/local/php/php-5.6/bin/php  server.php

使用软链接

ln -s /usr/local/php/php-5.6/bin/php /usr/local/bin/php
# 或
ln -s /usr/local/php/php-5.4/bin/php /usr/local/bin/php php -v

如果要切换默认PHP的版本,只需要重建软链接即可。

编写自动切换版本脚本

to_php56.sh,切换到默认 PHP 到 5.6 版本

rm /usr/local/bin/php
rm /usr/local/bin/phpize
rm /usr/local/bin/php-config
ln -s /usr/local/php/php-5.6/bin/php /usr/local/bin/php
ln -s /usr/local/php/php-5.6/bin/phpize /usr/local/bin/phpize
ln -s /usr/local/php/php-5.6/bin/php-config /usr/local/bin/php-config
echo "to php5.6 done"

to_php70.sh,切换到默认 PHP 到 7.0 版本

rm /usr/local/bin/php
rm /usr/local/bin/phpize
rm /usr/local/bin/php-config
ln -s /usr/local/php/php-7.0/bin/php /usr/local/bin/php
ln -s /usr/local/php/php-7.0/bin/phpize /usr/local/bin/phpize
ln -s /usr/local/php/php-7.0/bin/php-config /usr/local/bin/php-config
echo "to php 7.0 done"

注意:别忘了

1、去掉 .bash_profile  文件中,对 PHP 路径的配置(附:Mac Pro 修改环境变量);

2、删除掉 /usr/bin/php 文件;

后记1:

在 Mac 电脑上,删除不了系统自带的 PHP-5.6.25(没有权限,sudo 也不行),文件路径为 /usr/bin/php,顿时感觉 Mac 在安全性这块(用户权限)做的非常好。最后的解决方案是,修改 .bash_profile 文件,详细参考:Mac Pro 修改环境变量

后记2:

换成了其他脚本方式,实现了 Mac Pro 的PHP多版本切换,详情查看:Mac Pro 实现 PHP-5.6 与 PHP-7.0 等多版本切换

延伸阅读:

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

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

如何 实现PHP多版本的 共存 和 切换?的更多相关文章

  1. .Net dll多个同名的程序集版本冲突共存与通过基本代码或探测定位程序集方案

    .Net dll多个同名的程序集版本冲突共存与通过基本代码或探测定位程序集方案 在使用调用程序集的引用中的信息和配置文件中的信息确定了正确的程序集版本之后,并且在公共语言运行时在全局程序集缓存中进行检 ...

  2. linux 下多版本gcc 共存问题

    linux 下多版本gcc 共存问题 http://blog.csdn.net/isfirst/article/details/42296583 参考 http://blog.csdn.net/chi ...

  3. Mac下多版本pip共存

    Mac下多版本pip共存 来自于官方的解释, pip是python包管理工具, 该工具提供了对python包的查找, 下载, 安装, 卸载等功能python第三方工具包多数依赖于pip进行安装, 如 ...

  4. IIS7 IIS8 中多个版本php共存的方法

    原文地址: https://blog.cozof.com/pieces/54.shtml 最近又重回.net,用回IIS.然后用到某个php开源项目,需要低版本的php,之前装的一个php5.5不能用 ...

  5. mac中利用brew实现多版本php共存以及任意切换

    1.安装brew 参考链接:https://brew.sh/index_zh-cn.html 2.安装php56 brew install homebrew/php/php56 3.配置php56 因 ...

  6. 如何在Anaconda中实现多版本python共存

    anaconda中Python版本是3.5,因为爬虫原因,需要Python2.7版本,因此,希望能在anaconda中Python3和Python2共存. 1. 打开Anaconda Prompt,可 ...

  7. Windows环境下搭建Nginx和多版本PHP共存

    PHP版本众多,彼此之间兼容性不好,不同程序经常需要的不同版本的PHP版本.这里介绍如何使用NGINX让不同版本的PHP共存. 软件下载地址 与nginx整合的php需要选择Non Thread Sa ...

  8. 安装Ruby、多版本Ruby共存、Ruby安装慢问题

    rbenv rbenv可以管理多个版本的ruby.可以分为3种范围(或者说不同生效作用域)的版本: local版:本地,针对各项目范围 global版:全局,没有shell和local版时使用glob ...

  9. Dotnet Core多版本API共存的优雅实现

    API升级,新旧版本的API共存,怎么管理呢?   一.前言 最近,单位APP做了升级,同步的,API也做了升级. 升级过程中,出现了一点问题:API升级后,旧API也需要保留,因为有旧的APP还在使 ...

随机推荐

  1. 前端MVC学习总结——AngularJS验证、过滤器

    前端MVC学习总结--AngularJS验证.过滤器 目录 一.验证 二.过滤器 2.1.内置过滤器 2.1.1.在模板中使用过滤器 2.1.2.在脚本中调用过滤函数 2.2.自定义过滤器 三.指令( ...

  2. node基础11:接受参数

    1.接收参数 在Node中接受GET/POST请求的参数不像PHP那样,在PHP中直接有全局变量$_GET,$_POST来接受url,或者请求体重的参数. 在node中接受GET参数使用url.par ...

  3. 【跟着子迟品 underscore】JavaScript 数组展开以及重要的内部方法 flatten

    Why underscore (觉得这一段眼熟的童鞋可以直接跳到正文了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. ...

  4. JS组件系列——Bootstrap右键菜单解决方案:ContextMenu

    前言:有段时间没发表随笔了,过个年人都变得懒了.新年刚来上班,今天正好得空,将去年遗留的两个小组件总结记录下.有朋友跟我说:你的bootstrap组件要能够形成一个可以满足一般项目需求的系列组件,才有 ...

  5. RequireJS中的require如何返回模块

    requirejs中定义AMD模块规则如下: define(function(){ var ProductManager={ Create:function(){ console.log(" ...

  6. Sqlite创建增删改查

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. Fiddler 抓包工具总结

    阅读目录 1. Fiddler 抓包简介 1). 字段说明 2). Statistics 请求的性能数据分析 3). Inspectors 查看数据内容 4). AutoResponder 允许拦截制 ...

  8. 虚拟机VMware 12 Pro 永久许可证激活密钥

    热门虚拟机软件VMware Workstation Pro现已更新至v12.5.2.12.0属于大型更新,专门为Win10的安装和使用做了优化,支持DX10.4K高分辨率显示屏.OpenGL 3.3. ...

  9. signalr-源码

    1.一对一聊天 2.多对多 3.离线消息 1)群聊离线 2.1对一聊天离线 源码地址:https://github.com/aa1356889/SignalrCode 操作步骤 部署网站到iis 网上 ...

  10. 移动端浏览器和微信浏览器上禁止body的滚动条

    一般禁止body滚动的做法就是设置overflow:hidden. 但是很奇怪的发现在移动端浏览器和微信浏览器上这个不起作用,然后我分析了我的写法,就是在body上加了一个class去定义属性,然后改 ...