如果你用 PHP 開發程式,一定會遇過有些 legacy 的專案需要 PHP 5.6 甚至 5.3,但新的專案卻希望走在時代的尖端,使用 PHP 7 以上的版本。這邊就來說明一下,要怎麼快速地切換 PHP 環境。

前提

你的 PHP 得是用 Homebrew 裝的,但我相信今時今日應該大家起手式都是 brew install 了吧。

裝兩個版本的 PHP

先裝 php71

$ brew install php71
$ php -v
PHP 7.1.12 (cli) (built: Dec  2 2017 12:15:25) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

再來裝個 php56

$ brew install php56
.
.
.
==> Installing php56 from homebrew/php
Error: Cannot install homebrew/php/php56 because conflicting formulae are installed.
  php71: because different php versions install the same binaries.

Please `brew unlink php71` before continuing.

估計會出現這個問題,照著做先 unlink 掉就好。 最後就是今天的重點: php-version

$ brew install php-version
$ source $(brew --prefix php-version)/php-version.sh && php-version 5

這樣基本上就可以無痛切換環境了

$ php-version
* 5.6.33
  7.1.12
$ php -v
PHP 5.6.33 (cli) (built: Jan  7 2018 11:14:18)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
$ php-version 7
$ php -v
PHP 7.1.12 (cli) (built: Dec  2 2017 12:15:25) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

但是

如果一個不小心你跟我一樣,喜歡用 fish shell,在最後一個步驟的時候就會失敗

~> source $(brew --prefix php-version)/php-version.sh && php-version 5
fish: Unsupported use of '&&'. In fish, please use 'COMMAND; and COMMAND'.
source $(brew --prefix php-version)/php-version.sh && php-version 5
                                                    ^

不過別擔心,我們有 oh-my-fish !跟 oh-my-zsh 一樣安裝很簡單

~> curl -L https://get.oh-my.fish | fish

然後裝 fish 版本的 php-version

~> omf install php-version

這樣就可以囉!當然還有其他的替代方案像是 phpbrew 之類的,不過我個人是覺得這個在安裝、使用上都算簡單,一下就可以完成,不耽誤你寫 code 的時間。