需先确认系统中存在多个带版本号的PHP二进制文件(如/usr/bin/php7.4、/usr/bin/php8.2),再通过绝对路径调用对应PHP执行Composer安装指定Laravel版本,最后用artisan serve启动并访问/phpinfo路由验证实际运行版本。

在本地开发环境中同时安装多个PHP版本并为不同Laravel项目匹配对应版本,是避免“本地能跑、线上报错”的关键操作。你不需要卸载旧版PHP,也不必全局修改系统PATH——只要路径明确、调用精准,就能让Laravel 5.5用PHP 7.4、Laravel 11用PHP 8.2,互不干扰。
确认已安装多个PHP版本
先检查当前系统中实际存在的PHP二进制文件位置,避免后续调用时提示 command not found:
运行 ls -l /usr/bin/php* 或 find /usr -name "php" -type f 2>/dev/null | grep -E "/bin/php[0-9.]+"。
你会看到类似 /usr/bin/php7.4、/usr/bin/php8.2、/usr/local/bin/php 这样的路径。只要存在两个及以上带版本号的可执行文件,就满足多版本前提。
【注意:/usr/bin/php 是符号链接,它指向哪个版本,php -v 就显示哪个;但切换Laravel安装时,我们不碰它】
用指定PHP版本运行Composer安装Laravel
这是最直接、最安全的方式,完全绕过系统默认PHP,杜绝版本误判。
立即学习“PHP免费学习笔记(深入)”;
方法一:直接调用带版本号的PHP二进制文件 + 全局Composer
进入目标项目目录(如 ~/projects/laravel55),执行:/usr/bin/php7.4 /usr/bin/composer create-project laravel/laravel . "5.5.*"
这行命令强制使用PHP 7.4解析composer.phar,并限定Laravel版本为5.5分支。
方法二:用PHP绝对路径加载本地composer.phar(适合无全局Composer或权限受限环境)
先下载最新稳定版composer.phar到当前目录:curl -sS https://getcomposer.org/installer | /usr/bin/php8.2
再立即用PHP 8.2执行安装:/usr/bin/php8.2 composer.phar create-project laravel/laravel . "11.*"
安装完成后可删掉临时composer.phar,不影响其他项目。
方法三:为不同PHP版本配置独立Composer别名(一劳永逸)
在 ~/.bashrc 或 ~/.zshrc 中添加:alias composer74='/usr/bin/php7.4 /usr/bin/composer'alias composer82='/usr/bin/php8.2 /usr/bin/composer'
执行 source ~/.zshrc 生效后,即可在任意目录输入 composer74 create-project laravel/laravel myapp "5.5.*"。
验证Laravel项目真实依赖的PHP版本
仅靠 php -v 看系统默认版本毫无意义——你要确认的是该项目在运行时实际加载的PHP解释器。
第一步:进入Laravel项目根目录,执行:php -v
这只是看当前shell会话下默认PHP,跳过它。
第二步:运行Laravel内置诊断命令(需已安装):php artisan tinker --execute="echo PHP_VERSION;"
如果报错“command not found”,说明artisan未识别当前PHP环境,立刻检查上一步是否用了正确PHP路径安装。
第三步:创建一个临时诊断路由,在 routes/web.php 末尾添加:Route::get('/phpinfo', function () { return response()->view('phpinfo', ['version' => PHP_VERSION]); });
再新建 resources/views/phpinfo.blade.php,内容为:<h2>PHP Version: {{ $version }}</h2><pre>{{ phpinfo() }}</pre>
启动服务:/usr/bin/php8.2 artisan serve --port=8001
访问 http://127.0.0.1:8001/phpinfo,页面顶部明确显示的版本号,才是该Laravel实例真正运行的PHP版本。



















