管理多个PHP版本的5种方法

在开发 PHP 应用程序时,管理多个 PHP 版本是一项常见的挑战,由于框架依赖性和兼容性要求不同,应用程序往往需要不同的版本。虽然在不同 PHP 版本之间切换可能令人生畏,尤其是在系统层面,但有几种工具可以简化这一过程。

管理多个PHP版本的5种方法

在本文中,我们将探讨管理多个 PHP 版本的有效解决方案,帮助您选择合适的工具来简化开发工作流程。话不多说,直入正题。

1.  使用 Homebrew

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,如下所示。

查看PHP版本

通过 CLI,Homebrew 可以轻松地在 macOS 和 Linux 上使用多个 PHP 版本。但它也有自己的优缺点。因此,在决定 Homebrew 是否适合你时,请考虑以下几点。

2. 使用 PHP Monitor

PHP Monitor

优点:

  • 界面直观、用户友好。
  • 只需点击几下,即可轻松安装和管理 PHP 版本。
  • 只需单击即可快速切换版本。

缺点:

  • 仅适用于 macOS。
  • 需要并依赖 Homebrew 来管理 PHP 安装。
  • 需要 Laravel Valet 来处理每个项目的 PHP 版本。

PHP Monitor 是一款轻量级的 macOS 应用程序,旨在帮助开发者轻松管理和切换不同的 PHP 版本。它提供了一个熟悉而直观的用户界面,显示在屏幕顶部,让你只需点击一下就能切换 PHP 版本。该应用程序与 Homebrew 集成,让你无需使用终端即可轻松管理 PHP 设置。

PHP Monitor

如上图所示,您可以查看机器上安装的 PHP 版本、当前全局激活的版本、访问 PHP 配置文件、查看内存限制等。

该程序还提供了一种简单的方法,可以通过 Manage PHP Installations… 菜单安装和更新 PHP 版本。

通过PHP Monitor安装PHP不同版本

3. 使用 PHPCTL

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 安装的所有子命令和其他信息

您也可以直接运行 phpcomposer 命令。

php -v
composer -v

这两个命令实际上会在 Docker 容器中运行。PHPCTL 会自动将当前目录挂载到容器中,因此你可以像在本地机器上一样处理项目。

切换 PHP 版本

与运行命令或点击用户界面来切换 PHP 版本的 Homebrew 或 PHP Monitor 不同,PHPCTL 需要创建一个 .phpctlrc 文件,并指定要在指定目录下运行的 PHP 版本。

PHP_VERSION=83

在该目录下运行 phpcomposer 时,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

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 版本就变得毫不费力了。希望这篇文章能帮助你选择与工作流程相匹配的解决方案。

评论留言