很多人觉得下载TP最新版本就是去官网点个按钮,装完就开始写代码。可真正上线后才发现,一个不起眼的Composer依赖版本问题,能把整个项目拖垮。这就是我今天想重点聊的——版本风险到底从哪来,又该怎么管。
依赖锁文件不是摆设,它是你项目的安全带。我见过太多团队在开发机上用composer install跑得好好的,测试环境却报错,原因就是没把composer.lock提交到版本库。锁文件锁定了每个依赖的精确版本,只要它不变,你拉下来的永远是同一套代码。如果你还在手动改composer.json里的版本号,赶紧换成锁文件管理。
版本号波浪号~和脱字符^的区别,很多人一知半解。^1.2.3允许到2.0.0以下的最新版本,~1.2.3只允许到1.3.0以下。选错了,一个次要版本更新可能就引入破坏性变更。我建议对核心依赖用~锁定主版本和次版本,对工具类库可以用^但一定要搭配CI自动测试。
定期执行composer outdated看看哪些依赖落后了,但别看到新版就追。先读CHANGELOG,再看UPGRADE文档,最后拉分支测试。特别是安全更新,TP官方发布的紧急补丁一定要优先合入,其他功能性更新可以等版本稳定了再上。
安全审计是你的最后一道防线。composer audit能直接扫描已知漏洞,配合roave/security-advisories这种包,连安装有漏洞的依赖都会被禁止。我习惯每次部署前跑一次审计,发现问题立刻锁版本或替换依赖,绝不带问题上线。
