WSL下 切换php版本
在WSL2的Ubuntu里切换PHP版本,思路和纯Linux环境一样。最主流、也最稳妥的方法是使用Ondřej Surý的PPA仓库。它就像一个“大超市”,能方便地安装和切换各个版本的PHP。
我把步骤梳理了一下,你可以跟着操作:
⚙️ 第一步:添加PPA仓库并安装PHP 7.4
更新系统并安装依赖:打开WSL2的Ubuntu终端,依次执行以下命令更新系统,并安装添加仓库所需的工具:
sudo apt update sudo apt upgrade sudo apt install software-properties-common添加Ondřej Surý的PHP仓库:运行下面命令,期间提示确认时按
Enter即可。sudo add-apt-repository ppa:ondrej/php sudo apt update安装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共存,不用担心覆盖。
安装并启用 Sodium 扩展:这是解决之前JWT兼容问题的关键。执行以下命令安装:
sudo apt install php7.4-sodium # 通常安装后会自动启用,可以重启PHP-FPM服务确保生效(如果你用到了的话) sudo service php7.4-fpm restart
🔄 第二步:在多个PHP版本间自由切换
安装了多个版本后,可以通过update-alternatives这个系统级工具来切换。你只需要做一次配置,以后就能轻松切换了。
将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切换PHP版本:
- 交互式切换 (推荐):运行下面的命令,直接在菜单里选择想要使用的版本。
sudo update-alternatives --config php - 直接切换:如果你已经确定了要用的版本,可以用命令直接指定,非常快捷。
sudo update-alternatives --set php /usr/bin/php7.4
- 交互式切换 (推荐):运行下面的命令,直接在菜单里选择想要使用的版本。
验证切换结果:运行
php -v,确认输出的版本号是不是你想要的。
🚀 替代方案:使用Docker (Laravel Sail)
如果你觉得手动管理PHP版本还是有点繁琐,或者希望环境能完全复现、团队共享,那么 Docker (Laravel Sail) 是一个绝佳的选择。它会为每个项目创建一个独立的容器环境,完全隔离,互不影响,并且配置可以随代码一同提交,保证了环境的一致性。这种方式的稳定性和可移植性最高,也是目前社区的主流实践方向。
如果你的项目本身就支持,一条命令就能启动包含PHP 8.x、MySQL、Redis等所有服务的完整环境,完全不用担心系统环境冲突。
💡 其他注意事项
- Composer配置:切换PHP版本后,可能需要再次运行
composer install或composer update,因为某些依赖包(如JWT)可能需要重新编译以适配当前PHP环境。 - 项目根目录:注意,你的项目放在
/mnt/d/code/下,这是在Windows文件系统中。为了获得更好的I/O性能,可以考虑把项目文件移到WSL2内部,比如~/code/目录下。
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu
推荐文章: