WSL下 切换php版本

AI摘要
本文为知识分享,介绍了在WSL2的Ubuntu环境中切换PHP版本的两种主流方法。核心步骤包括通过Ondřej Surý的PPA仓库安装和管理多个PHP版本,并使用`update-alternatives`命令进行系统级切换。同时,文章推荐了使用Docker(Laravel Sail)作为更稳定、可移植的替代方案,以实现项目环境的完全隔离与一致性。

在WSL2的Ubuntu里切换PHP版本,思路和纯Linux环境一样。最主流、也最稳妥的方法是使用Ondřej Surý的PPA仓库。它就像一个“大超市”,能方便地安装和切换各个版本的PHP。

我把步骤梳理了一下,你可以跟着操作:

⚙️ 第一步:添加PPA仓库并安装PHP 7.4

  1. 更新系统并安装依赖:打开WSL2的Ubuntu终端,依次执行以下命令更新系统,并安装添加仓库所需的工具:

    sudo apt update
    sudo apt upgrade
    sudo apt install software-properties-common
  2. 添加Ondřej Surý的PHP仓库:运行下面命令,期间提示确认时按 Enter 即可。

    sudo add-apt-repository ppa:ondrej/php
    sudo apt update
  3. 安装PHP 7.4及常用扩展:安装PHP 7.4核心包,以及一个Laravel项目通常会用到的扩展集合。

    sudo apt install php7.4 php7.4-mysql php7.4-gd php7.4-xml php7.4-zip php7.4-mbstring php7.4-curl php7.4-json

    提示:如果系统里已经有了其他PHP版本,这个命令会让它们和PHP 7.4共存,不用担心覆盖。

  4. 安装并启用 Sodium 扩展:这是解决之前JWT兼容问题的关键。执行以下命令安装:

    sudo apt install php7.4-sodium
    # 通常安装后会自动启用,可以重启PHP-FPM服务确保生效(如果你用到了的话)
    sudo service php7.4-fpm restart

🔄 第二步:在多个PHP版本间自由切换

安装了多个版本后,可以通过update-alternatives这个系统级工具来切换。你只需要做一次配置,以后就能轻松切换了。

  1. 将PHP版本注册到alternatives系统:你需要告诉系统有哪些PHP版本可用。请将下面命令中的8.x换成你系统里实际存在的其他版本号(如php8.3)。

    # 注册PHP 7.4,优先级数字(这里是74)可以任意指定
    sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.4 74
    
    # 注册PHP 8.3(请根据你实际的版本修改),并给它一个更高的优先级83,这样它会是自动模式下的默认版本
    sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.3 83
  2. 切换PHP版本

    • 交互式切换 (推荐):运行下面的命令,直接在菜单里选择想要使用的版本。
      sudo update-alternatives --config php
    • 直接切换:如果你已经确定了要用的版本,可以用命令直接指定,非常快捷。
      sudo update-alternatives --set php /usr/bin/php7.4
  3. 验证切换结果:运行 php -v,确认输出的版本号是不是你想要的。

🚀 替代方案:使用Docker (Laravel Sail)

如果你觉得手动管理PHP版本还是有点繁琐,或者希望环境能完全复现、团队共享,那么 Docker (Laravel Sail) 是一个绝佳的选择。它会为每个项目创建一个独立的容器环境,完全隔离,互不影响,并且配置可以随代码一同提交,保证了环境的一致性。这种方式的稳定性和可移植性最高,也是目前社区的主流实践方向。

如果你的项目本身就支持,一条命令就能启动包含PHP 8.x、MySQL、Redis等所有服务的完整环境,完全不用担心系统环境冲突。

💡 其他注意事项

  • Composer配置:切换PHP版本后,可能需要再次运行 composer installcomposer update,因为某些依赖包(如JWT)可能需要重新编译以适配当前PHP环境。
  • 项目根目录:注意,你的项目放在 /mnt/d/code/ 下,这是在Windows文件系统中。为了获得更好的I/O性能,可以考虑把项目文件移到WSL2内部,比如 ~/code/ 目录下。
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!