brew-php-switcher 实现Mac PHP版本切换

这篇文章中你将了解到以下内容

查看php基本环境

理解PHP运行模式

brew-php-switcher基本使用

理解bash_profile配置文件

brew安装软件相关的命令

在开始执行PHP版本相关操作之前,我们先检查下本地环境重启Mac之后

执行以下命令

brew services list



以上我们可以看出 有两个php服务存在,而系统或者命令行会认其中的一个,识别哪个php环境是另外一件事,后边会叙述。

这里先补充php运行的一个基础知识

PHP的运行模式

业界公认的PHP运行模式有4种

1 CGI通用网关接口模式

2 FAST-CGI模式

3 CLI命令行模式

4 模块模式

前两者涉及到协议升级,也就是常说的php-fpm,模块模式涉及到服务器与协议的搭配,比如Apache,nginxCLI命令行模式就是shell命令行,php -v;这样的命令理解这个概念,有助于判断当前运行的PHP实际版本是哪一个。 

进而理解 php -v;结果和 网页phpinfo() 执行结果不一样的根本原因。

php-fpm -v

PHP 7.2.12 (fpm-fcgi) (built: Nov  9 2018 10:58:18)Copyright (c) 1997-2018 The PHP GroupZend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies    with Zend OPcache v7.2.12, Copyright (c) 1999-2018, by Zend Technologies

查看PHP相关版本

首先查看官方支持的php相关版本有哪些

brew search php

brew-php-switcher是什么

brew-php-switcher是一个php环境版本切换工具,对通过brew安装的php版本进行切换。

github地址 https://github.com/philcook/brew-php-switcher

作为php版本切换管理工具,brew-php-switcher与php version功能一致,可惜php version已经放弃使用,对于mac用户,只能选择brew-php-switcher作为版本切换工具。

brew 不提供5.6的安装源了,所以brew-php-switcher也无法实现5.6的切换了。

安装

brew brew-php-switcher install

基本使用

brew-php-switcher +版本号

brew-php-switcher 

usage: brew-php-switcher version [-s|-s=*] [-c=*]

    version    one of: 7.0,7.1,7.2,7.3

    -s        skip change of mod_php on apache

    -s=*      skip change of mod_php on apache or valet restart i.e (apache|valet,apache|valet)

    -c=*      switch a specific config (apache|valet,apache|valet

如切换7.2版本

brew-php-switcher   7.2

Switching to php@7.2

Switching your shell

Unlinking /usr/local/Cellar/php@5.6/5.6.38... 25 symlinks removed

Unlinking /usr/local/Cellar/php@7.2/7.2.18... 0 symlinks removed

Unlinking /usr/local/Cellar/php/7.3.5... 0 symlinks removed

Linking /usr/local/Cellar/php@7.2/7.2.18... 25 symlinks created

If you need to have this software first in your PATH instead consider running:

  echo 'export PATH="/usr/local/opt/php@7.2/bin:$PATH"' >> ~/.bash_profile

  echo 'export PATH="/usr/local/opt/php@7.2/sbin:$PATH"' >> ~/.bash_profile

按照以上提示修改 环境变量并且

 source ~/.bash_profile

生效之后

执行php -v;  控制台php命令生效(cli)

php -v;

PHP 7.2.18 (cli) (built: May 22 2019 00:08:35) ( NTS )

Copyright (c) 1997-2018 The PHP Group

Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

    with Zend OPcache v7.2.18, Copyright (c) 1999-2018, by Zend Technologies

执行php-fpm -v;

php-fpm -v;

PHP 7.2.18 (fpm-fcgi) (built: May 22 2019 00:08:38)

Copyright (c) 1997-2018 The PHP Group

Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

    with Zend OPcache v7.2.18, Copyright (c) 1999-2018, by Zend Technologies


查看软连接

cd /usr/local/opt/php@7.2/sbin/local/opt

ls -l

lrwxr-xr-x  1  admin  19  6  2 06:21 php -> ../Cellar/php/7.3.5

lrwxr-xr-x  1  admin  32  3 20 16:07 php-code-sniffer -> ../Cellar/php-code-sniffer/3.4.1

lrwxr-xr-x  1  admin  24  5 28 09:25 php@5.6 -> ../Cellar/php@5.6/5.6.38

lrwxr-xr-x  1  admin  24  6  2 05:54 php@7.2 -> ../Cellar/php@7.2/7.2.18

lrwxr-xr-x  1  admin  19  6  2 06:21 php@7.3 -> ../Cellar/php/7.3.5


识别PHP服务

上文中提到 brew services显示两个php服务,我们可以使用下边的命令依次关闭,检验web服务识别的是哪个PHP版本

brew services stop php

brew services stop php@7.2

分别使用phpinfo() 查看当前的运行版本,当php服务全部关闭时,网页会直接显示502

brew services restart php

查看进程

ps -ef | grep php-fpm


brew services start php@7.2

If you need to have php@7.2 first in your PATH run:

  echo 'export PATH="/usr/local/opt/php@7.2/bin:$PATH"' >> ~/.bash_profile

  echo 'export PATH="/usr/local/opt/php@7.2/sbin:$PATH"' >> ~/.bash_profile

You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

初步理解bash_profile配置文件

mac环境下,自定义安装的软件都会在 /usr/local/Cellar 路径下,当安装软件与系统原有软件相互冲突时,比如Python2.7与python3.n,PHP5.6与PHP7.n, 就需要指定默认使用哪个版本。

系统配置文件

~/.bash_profile

通过修改~/.bash_profile,使系统识别默认的Python版本为3.7

alias python="/usr/local/Cellar/python/3.7.0/bin/python3.7"

命令生效  source  ~/.bash_profile

PHP7安装mongodb扩展

which pecl

sudo /usr/local/opt/php@7.2/bin/pecl  install mongodb

Build process completed successfully

Installing '/usr/local/Cellar/php@7.2/7.2.14/pecl/20170718/mongodb.so'

install ok: channel://pecl.php.net/mongodb-1.5.3

Extension mongodb enabled in php.ini

YII2 MongoDb扩展https://packagist.org/packages/yiisoft/yii2-mongodb"yiisoft/yii2-mongodb": "~2.1.0" 2.1.0 是一个版本节点,之前使用老的mogo驱动。

php -m | grep mongodb

最后查了一圈资料发现 这个网址下的安装教程挺实用的,还是依靠pecl安装。

https://www.runoob.com/mongodb/php7-mongdb-tutorial.html

PHP7安装redis扩展

 sudo /usr/local/opt/php@7.2/bin/pecl  install  igbinary

sudo /usr/local/opt/php@7.2/bin/pecl  install redis

Build process completed successfully

Installing '/usr/local/Cellar/php@7.2/7.2.14/pecl/20170718/redis.so'

install ok: channel://pecl.php.net/redis-4.2.0

Extension redis enabled in php.ini


补充常用命令

查看php ini配置文件路径

php -i | grep php.ini

输出

Configuration File (php.ini) Path => /usr/local/etc/php/7.2

Loaded Configuration File => /usr/local/etc/php/7.2/php.ini

查看pecl路径

which pecl

输出

/usr/local/opt/php@7.2/bin/pecl

查看通过brew安装的服务列表

brew services list


参考资料

解决php -v查看到版本于phpinfo()打印的版本不一致问题

 PHP四种运行模式

https://blog.csdn.net/u013549582/article/details/85097407

dyld: Library not loaded

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容