核心是显式路径调用指定PHP二进制+匹配Composer+对应扩展,而非切换全局默认版本;如/usr/bin/php7.0 composer70.phar create-project laravel/laravel 5.5.*,并确保php7.0-mbstring等扩展已安装。

在本地多个 PHP 版本间切换安装 Laravel,核心不是“卸载旧版换新版”,而是**按需调用指定 PHP 二进制文件 + 匹配的 Composer + 对应扩展**。Ubuntu/Debian 系统最稳妥的方式是直接路径调用,不改动全局环境变量,避免影响其他项目。
确认已安装多个 PHP 版本
先检查系统中有哪些 PHP 可执行文件:
- 运行 ls /usr/bin/php*,常见输出如:
php7.0、php8.1、php8.2、php(软链接,默认版本) - 逐个验证版本:/usr/bin/php7.0 -v、/usr/bin/php8.2 -v
- 确保对应版本的常用扩展也已安装,例如:
sudo apt install php7.0-mbstring php7.0-xml php7.0-pdo php7.0-tokenizer
sudo apt install php8.2-mbstring php8.2-xml php8.2-pdo php8.2-tokenizer
下载并绑定对应版本的 Composer
Composer 不是全局通用的——它会读取当前 PHP 的扩展和版本限制。高版本 Composer(如 2.5+)可能不兼容 PHP 7.0,所以必须匹配:
- 去 Composer 官网 下载历史版本(如 2.2.20 支持 PHP 7.0+)
- 保存为 composer70.phar 和 composer82.phar 等便于区分的名称
- 测试是否可用:
/usr/bin/php7.0 composer70.phar --version
/usr/bin/php8.2 composer82.phar --version
用指定 PHP + 指定 Composer 创建项目
不再依赖 php 命令默认指向哪个版本,全程显式调用:
立即学习“PHP免费学习笔记(深入)”;
- 装 Laravel 5.5(仅支持 PHP ≤ 7.3):
/usr/bin/php7.0 composer70.phar create-project --prefer-dist laravel/laravel myapp55 5.5.* - 装 Laravel 10(要求 PHP ≥ 8.1):
/usr/bin/php8.2 composer82.phar create-project laravel/laravel:^10.0 myapp10 - 过程中若提示缺扩展(如
ext-intl),就装对应版本:
sudo apt install php8.2-intl
启动项目时也要指定 PHP 版本
项目创建后,php artisan serve 默认用系统 php 命令,可能报错。正确做法是:
- 进入项目目录,显式调用:
/usr/bin/php8.2 artisan serve(Laravel 10)
/usr/bin/php7.0 artisan serve(Laravel 5.5) - 如需常驻或部署,建议在 Nginx/Apache 配置中明确指定
fastcgi_pass对应的 PHP-FPM socket(如php8.2-fpm.sock),而非依赖 CLI 版本
不需要改 update-alternatives 或修改 /etc/environment,路径调用更轻量、可追溯、无副作用。关键就是:版本对齐——PHP 二进制、Composer PHAR、扩展包、Laravel 版本,四者必须协同。



















