|
```html 打开终端,版本敲下 php artisan --version,版本屏幕上蹦出 Laravel Framework 10.48.4——这是版本最直接的方式。但如果你在项目根目录下,版本这个命令偶尔会报错,版本比如 Could not open input file: artisan,版本那说明你站错地方了,版本或者这个项目根本不是版本 Laravel 骨架。 我见过不少新手,版本拿到一个别人给的版本代码包,上来就 php artisan --version,版本结果终端甩出一堆红字,版本然后开始怀疑人生。版本其实查版本这事,版本至少有五种路径,版本每种背后都对应着不同的场景。 命令行里最稳的那条路 在项目根目录执行: php artisan --version 输出类似 Laravel Framework 9.52.16。注意那个 “Framework” 后面的数字,就是你要的版本号。但这里有个坑:如果 artisan 文件存在,但 vendor 目录没安装,命令会提示你 Composer dependencies not installed。这时候要么跑 composer install,要么换个方法。 还有个变体:php artisan -V,大写 V,效果一样。但别写成 -v,那是 verbose 模式,输出一堆调试信息,版本号反而藏在中间。 直接翻文件,不依赖任何命令 打开项目根目录下的 composer.json,找到 require 段: "laravel/framework": "^10.10" 那个 ^10.10 表示当前项目允许的 Laravel 大版本是 10,实际安装的可能是 10.48.4 或更高。但注意,这只是约束条件,不是精确版本。要看精确的,去 vendor/laravel/framework/src/Illuminate/Foundation/Application.php,里面有个常量: const VERSION = '10.48.4'; 这招在 CI 环境里特别管用——有时候 artisan 命令因为权限或环境变量跑不起来,直接读文件反而最快。 代码里动态获取 如果你在写一个包或者调试工具,需要在运行时拿到版本号,用 app()->version()。比如在路由里临时加一行: Route::get('/version', function () { return app()->version(); }); 访问 /version 就能看到。不过生产环境别这么干,暴露版本号有安全风险。我一般只在本地开发时用这招,或者写个 artisan 命令封装起来。 那些容易踩的坑 php artisan --version 报错 “No application encryption key has been specified” 是怎么回事?这通常发生在 Laravel 5.5 之前的版本,或者 .env 文件缺失。解决方法很简单:cp .env.example .env 然后 php artisan key:generate。但如果你只是查版本,其实可以临时跳过——直接看 composer.lock 文件,搜索 laravel/framework,里面的 version 字段就是精确版本。 还有一次,同事在 Docker 容器里执行 php artisan --version,输出的是宿主机的 PHP 版本而不是 Laravel 版本。原因是他没进容器,直接在宿主机终端敲了命令。所以查版本前,先确认你在正确的环境里。 版本号里的门道 Laravel 的版本号遵循语义化版本:主版本.次版本.修订号。比如 10.48.4,10 是大版本,48 是功能更新,4 是补丁。大版本每年更新一次,LTS 版本(比如 6.x、9.x)提供两年安全支持。如果你看到 dev-master 或者 10.x-dev,说明项目用的是开发分支,不是稳定版——这种通常出现在贡献者本地或者某些激进的项目里。 我自己的习惯是:接手任何 Laravel 项目,第一件事就是查版本。因为不同大版本之间,目录结构、辅助函数、甚至 artisan 命令都有差异。比如 Laravel 9 开始默认用 Vite 替代 Laravel Mix,你要是不知道版本,照着旧教程配前端,能折腾一下午。 所以别嫌麻烦,php artisan --version 敲一下,心里有底。 ``` |