PHPBrew 初體驗
PHPBrew 是國內 PHP 大神 c9s 所開發的,目的類似 nvm、rvm 或 pyenv,都是在做對應語言的直譯器下載編譯與切換的工具。
過去一直都是使用 brew install php
來安裝單一的 PHP 直譯器,因為維護的產品還沒遇到不同 PHP 版本的問題。但最近有需求要在 7.x 與 8.0 互相切換,在使用 brew link
有些情境下會失效,非常煩人,現在要準備改用 PHPBrew 了。
首先把過去的 php 移除,然後再透過 brew 安裝,還算簡單:
brew uninstall php |
接著可以使用 known 指令來查有哪些版本:
❯ phpbrew known |
安裝主要版本
接著來裝目前的主要版本,後面的 +default
指的是安裝預設的 extension,反正就先裝好來看看再說。
phpbrew install 8.0 +default |
但立馬就報錯:
checking for BZip2 in default path... not found |
查過 issue,看來只是單純 bzip2 要重裝。後來還有看到 zlib 出錯,單純只是沒裝:
brew install bzip2 |
但不知道為何會吃不到 zlib 的函式庫,所以得直接指定路徑:
# Fish |
另外會報一個 clang 的錯。
clang: error: linker command failed with exit code 1 (use -v to see invocation) |
查過 issue,裡面提到要裝 libxml2,雖然錯誤訊息差很多,但做完確實是 work 的。
後面就沒看到其他問題了,只是因為是從原始碼開始編譯起,所以會有點久。
裝好之後會出現一段訊息:
To use the newly built PHP, try the line(s) below: |
上面 use 指的是在目前的 session 使用 8.0.3,下面 switch 則是設定預設的 PHP 版本。
若是要安裝其他 ext,過去是用 pecl,phpbrew 則是用 extension 指令來安裝。
phpbrew extension install mongodb |
再來是安裝 composer,過去的文件有提到可以用 phpbrew app 安裝,但後來似乎被移除了,所以只能用土法練鋼安裝法:
curl -sS https://getcomposer.org/installer | php |
切換起來還算順,只是指令不一樣,很不習慣而已。
安裝過時版本
這裡是只安裝 cli variants 試試:
phpbrew install 7.2 +cli |