composer global outdated才是正确命令,用于检查全局安装的CLI工具是否过期;composer global show --outdated非法,因show与outdated互斥,不支持连用。

composer global show --outdated 这个命令根本不存在 —— Composer 没有 global show 这个子命令,更不支持 --outdated 修饰它。
为什么 composer global show --outdated 会报错或没反应
Composer 的 global 子命令只接受 require、update、outdated、list、show 等有限几个动作,但 show 和 outdated 是互斥的:前者查已安装包详情,后者查更新状态,不能连用。
- 执行
composer global show --outdated通常会报错:[RuntimeException] The "--outdated" option does not exist. - 有些旧版 Composer 可能静默忽略该参数,只执行
composer global show(即列出所有全局包),但完全不检查更新 - 你真正想用的,是独立的
composer global outdated
composer global outdated 才是正确命令
它专用于检查通过 composer global require 安装的 CLI 工具(如 laravel/installer、phpunit/phpunit、deployer/deployer)是否过期。
- 输出格式为
vendor/package current → latest,例如:laravel/installer 4.4.0 → 5.0.1 - 无任何输出 = 所有全局包已是最新版本(不是命令失效)
- 不加参数时,只显示「在当前约束下允许升级」的包;若某包最新版是 v5,但你装的是
"laravel/installer": "^4.0",它默认不出现 - 想看到所有可能的新版本(包括主版本跃迁),加
--all:composer global outdated --all
容易被忽略的 PATH 和缓存问题
即使 composer global outdated 显示某工具已过期,升级后仍可能用不到新命令 —— 根本原因往往不在 Composer 本身。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
~/.composer/vendor/bin/(Linux/macOS)或%APPDATA%\Composer\vendor\bin(Windows)必须在$PATH中,否则which laravel找不到 - 升级后旧终端不生效:改完
PATH必须新开 shell,或运行source ~/.zshrc - 私有仓库或镜像源配置会影响结果:如果全局配置了
repo.packagist false,outdated就不会查 packagist.org,导致“明明有新版却显示无更新” - 元数据缓存滞后:执行
composer clear-cache再跑global outdated,避免卡在旧版本信息上
升级某个全局包比 global update 更安全
composer global update 会强行升级所有全局包,极易因依赖冲突失败(比如两个工具分别要求 symfony/console:^5 和 ^6)。
- 推荐方式:显式指定包和版本,例如
composer global require laravel/installer:^5.0 - 想回退?删掉对应目录:
rm -rf ~/.composer/vendor/laravel/installer,再重装旧版 - 检查装了哪些命令:
composer global show laravel/installer --all | grep bin - 确认命令是否就位:
which laravel应输出路径,而非空白
真正麻烦的从来不是命令怎么写,而是 PATH 没生效、缓存没清、源配错了 —— 这些地方一卡,global outdated 就成了“看起来正常,实际失灵”的黑盒。










