在開發 PHP 應用程式時,管理多個 PHP 版本是一項常見的挑戰,由於框架依賴性和相容性要求不同,應用程式往往需要不同的版本。雖然在不同 PHP 版本之間切換可能令人生畏,尤其是在系統層面,但有幾種工具可以簡化這一過程。
在本文中,我們將探討管理多個 PHP 版本的有效解決方案,幫助您選擇合適的工具來簡化開發工作流程。話不多說,直入正題。
1. 使用 Homebrew
優點:
- 易於安裝和管理多個 PHP 版本。
- 使用簡單的命令即可快速切換版本。
- 定期更新,維護良好。
- 可在 macOS 和 Linux 上無縫執行。
缺點:
- 僅適用於 macOS 和 Linux。
- 如果你不熟悉使用 CLI,更新可能會很慢,而且比較混亂。
MacOS 和 Linux 上流行的軟體包管理器 Homebrew 簡化了 PHP 版本管理。從官方網站安裝 Homebrew 後,按照以下步驟設定並切換 PHP 版本:
安裝不同的 PHP 版本
要使用 Homebrew 管理多個 PHP 版本,我們首先要進入 Shivam Mathur 廣泛使用的 PHP 程式碼庫。該版本庫提供了可以安裝的各種 PHP 版本:
brew tap shivammathur/php
一旦訪問了該版本庫,就可以安裝所需的 PHP 版本了。下面是安裝 PHP 7.4、8.2 和最新版本(目前為 8.3)的方法:
brew install shivammathur/php/php@7.4 brew install shivammathur/php/php@8.2 brew install shivammathur/php/php
您可以根據專案需要任意組合安裝版本。每個版本都將單獨儲存在系統中。
切換 PHP 版本
雖然 Homebrew 允許你同時安裝多個 PHP 版本,但你的系統一次只能通過它的 PATH
使用一個版本。這就好比在你的工具箱中安裝了多個 PHP 版本,但只有一個可以作為你的活動工具。
假設當前執行的是 PHP 8.3,但現在需要切換到 PHP 7.4。首先,取消當前版本的連結,將當前活動的 PHP 版本從 PATH
中 “斷開”。
brew unlink php
解除當前版本的連結後,可以使用 brew link
命令連結其他版本:
brew link php@7.4
現在,當你執行 php -v
時,它將顯示當前的 PHP 版本為 7.4,如下所示。
通過 CLI,Homebrew 可以輕鬆地在 macOS 和 Linux 上使用多個 PHP 版本。但它也有自己的優缺點。因此,在決定 Homebrew 是否適合你時,請考慮以下幾點。
2. 使用 PHP Monitor
優點:
- 介面直觀、使用者友好。
- 只需點選幾下,即可輕鬆安裝和管理 PHP 版本。
- 只需單擊即可快速切換版本。
缺點:
- 僅適用於 macOS。
- 需要並依賴 Homebrew 來管理 PHP 安裝。
- 需要 Laravel Valet 來處理每個專案的 PHP 版本。
PHP Monitor 是一款輕量級的 macOS 應用程式,旨在幫助開發者輕鬆管理和切換不同的 PHP 版本。它提供了一個熟悉而直觀的使用者介面,顯示在螢幕頂部,讓你只需點選一下就能切換 PHP 版本。該應用程式與 Homebrew 整合,讓你無需使用終端即可輕鬆管理 PHP 設定。
如上圖所示,您可以檢視機器上安裝的 PHP 版本、當前全域性啟用的版本、訪問 PHP 配置檔案、檢視記憶體限制等。
該程式還提供了一種簡單的方法,可以通過 Manage PHP Installations… 選單安裝和更新 PHP 版本。
3. 使用 PHPCTL
優點:
- 獨立於平臺且可移植。
- 為新專案提供額外的 CLI 工具、互動式外殼,以及其他常用的 PHP 工具,如 PHPCS、PHPUnit、RectorPHP 等。
缺點:
- 需要在系統中安裝 Docker。
- 需要手動配置
.phpctlrc
檔案來切換 PHP 版本。 - Docker 可能比其他解決方案消耗更多資源。
PHPCTL 是一款旨在幫助開發人員利用 Docker 容器 在不同 PHP 版本之間輕鬆切換的工具。這使得 PHPCTL 具有可移植性和平臺獨立性,可以在任何支援 Docker 的作業系統上管理 PHP 版本。它還提供了額外的 CLI 工具,如用於新專案的 phpctl create
、用於互動式 shell 的 phpctl repl
和用於配置設定的 phpctl init
,以及其他方便的功能。
安裝 PHPCTL
在開始之前,你需要在系統上安裝 Docker。Docker Desktop 很好用,如果你使用的是 macOS,你可能更喜歡 OrbStack。
安裝好 Docker 後,就可以使用以下命令安裝 PHPCTL 了:
/bin/bash -c "$(curl -fsSL https://phpctl.dev/install.sh)"
或者,如果您安裝了 Homebrew,可以執行:
brew install opencodeco/phpctl/phpctl
這將把 PHPCTL 的二進位制檔案下載到系統中並使其可執行,讓您可以立即使用該工具。指令碼會自動安裝 PHPCTL 並設定必要的路徑,因此無需手動配置。
安裝完成後,可以執行以下命令檢查是否安裝成功:
phpctl list
該命令將列出當前 PHP 安裝的所有子命令和其他資訊,如下所示。
您也可以直接執行 php
和 composer
命令。
php -v composer -v
這兩個命令實際上會在 Docker 容器中執行。PHPCTL 會自動將當前目錄掛載到容器中,因此你可以像在本地機器上一樣處理專案。
切換 PHP 版本
與執行命令或點選使用者介面來切換 PHP 版本的 Homebrew 或 PHP Monitor 不同,PHPCTL 需要建立一個 .phpctlrc
檔案,並指定要在指定目錄下執行的 PHP 版本。
PHP_VERSION=83
在該目錄下執行 php
或 composer
時,PHPCTL 將自動切換到 .phpctlrc
檔案中指定的 PHP 版本。
就是這樣。一旦配置完成,PHPCTL 就會提供無縫的開發體驗,非常方便。不過,它也有自己的利弊。
4. 使用 PVM
優點:
- 易於在 Windows 上安裝和管理 PHP 版本。
- 與 nvm 非常相似,因此熟悉起來既快又簡單。
缺點:
- 僅適用於 Windows。
- 安裝需要手動操作。
PVM 簡化了 Windows 上的 PHP 版本管理。PVM 與 Node Version Manager (nvm) 類似,但專門針對 PHP,它消除了常見的 Windows PATH
變數問題,簡化了不同 PHP 版本之間的切換。
安裝 PVM
從官方 Github 程式碼庫下載最新的 PVM 版本。然後,在 C:\Users\YourUsername\.pvm\bin
下建立一個資料夾,並將下載的 pvm.exe
放入該資料夾。
最後,通過系統屬性 > 環境變數將 .pvm\bin
資料夾新增到系統的 PATH
變數中。
安裝完成後,就可以使用 PVM 快速、輕鬆地切換 PHP 版本了。由於 PVM 在很大程度上受到 nvm 的啟發,因此命令也很相似。下面是一些開始使用的命令:
使用 PVM 安裝 PHP
PVM 使在 Windows 上安裝多個 PHP 版本變得更容易。如果需要一個當前未安裝在電腦上的版本,可以使用 install 命令:
pvm install 8.2
…將在您的計算機上安裝 PHP 8.2。
使用 PVM 切換 PHP 版本
如果要切換到特定的 PHP 版本,請使用 use 命令。您必須至少指定主版本和次版本,如果沒有提供,PVM 將選擇最新的可用補丁版本。
pvm use 8.2
如果要切換到一個特定的補丁版本,還需包含補丁編號:
pvm use 8.2.3
就這樣。PVM 是 Windows 上管理 PHP 版本的好工具,但它也有自己的優點和缺點。
5. 使用 Valet
優點:
- 在 macOS 上輕鬆安裝和管理 PHP 版本。
- 為不同專案快速切換 PHP 版本。
- 與 Laravel 專案無縫協作,並支援 WordPress、Symfony 等其他型別的專案。
缺點:
- 僅適用於 macOS。
- 需要並依賴 Homebrew 來管理 PHP 安裝。
Laravel Valet 是專為 macOS 設計的輕量級開發環境,讓 PHP 開發變得輕而易舉。Valet 的特別之處在於其內建的 PHP 版本管理功能,無需複雜配置,即可在不同專案的 PHP 版本間切換。
安裝 Valet
要開始使用,請使用 Composer 將 Valet 安裝為全域性包:
composer global require laravel/valet
安裝完成後,執行 Valet 安裝命令:
valet install
使用 Valet 切換 PHP 版本
Valet makes PHP version switching simple with the valet use php@version
command. For example:
通過 valet use php@version
命令,Valet 可以簡單地切換 PHP 版本。例如
valet use php@8.2
如果當前版本缺失,它會通過 Homebrew 自動安裝。
對於特定專案的 PHP 版本,可以在專案根目錄下建立一個 .valetrc
檔案,其中包含一行 php=php@8.2
。然後,只需執行
valet use
…Valet 將自動切換到 .valetrc
檔案中指定的 PHP 版本。
小結
有了正確的工具,在 macOS、Linux 或 Windows 上管理多個 PHP 版本就變得毫不費力了。希望這篇文章能幫助你選擇與工作流程相匹配的解決方案。
評論留言