composer global update 经常没反应,因为它只依据 ~/.composer/composer.json 中声明的包和版本约束更新,而该文件通常不存在、为空或版本约束过严(如 "laravel/installer": "^4.0"),无法拉取新版,且不扫描已安装包或读取 ~/.composer/vendor/ 实际内容。

composer global update 为什么经常没反应
它只更新 ~/.composer/composer.json 里明确声明的包,而这个文件多数人根本没维护过——你用 composer global require laravel/installer 装完,包进了 ~/.composer/vendor/,但不会自动写进 composer.json。所以运行 composer global update 后静悄悄,大概率是因为:
• ~/.composer/composer.json 不存在或为空
• 文件里锁死了旧版本,比如 "laravel/installer": "4.4.0",根本拉不到 v5.x
• composer global status 直接报 No composer.json found
想批量更新全局包,别硬跑 global update
直接 composer global update 极易失败,尤其当多个全局包依赖冲突(比如一个要 PHP 8.1,另一个已放弃支持)、或 Composer 自身版本太老时,会卡在 Your requirements could not be resolved,还不告诉你具体是哪个包惹的祸。
更可控的做法是:
• 先查有哪些包: composer global show
• 再看哪些能升: composer global outdated(加 --all 可看间接依赖)
• 对每个想升的包,显式重装: composer global require laravel/installer:^5.0 --update-with-dependencies
• 升完确认命令是否还在 $PATH 里: which laravel,没输出就补 export PATH="$HOME/.composer/vendor/bin:$PATH" 到 shell 配置文件
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
升级后命令找不到或类加载失败
这不是没装上,而是环境没跟上:
• laravel --version 报 command not found?检查 $PATH 是否包含 $HOME/.composer/vendor/bin
• 运行时报 Class not found?执行 composer global dump-autoload 刷新自动加载器
• 某些包(如 fxp/composer-asset-plugin)升级后需手动验证: composer global show fxp/composer-asset-plugin,确保 PHP 版本兼容(PHP 8.0+ 必须用 ^1.4.7)
• 升级后建议删掉旧 lock 文件残留: rm ~/.composer/composer.lock,再跑一次 composer global install 确保干净重建
真正值得全局安装的包其实很少
很多工具(phpstan、phpunit、deployer)官方已明确建议项目内安装,全局装反而增加维护负担:
• 查该包是否在项目中也用:如果是,改用 composer require --dev vendor/package-name
• 看 GitHub README 或官网文档,有无 “Don’t install globally” 提示
• 运行 which phpunit,如果路径是 /usr/local/bin/phpunit 而不是 ~/.composer/vendor/bin/phpunit,说明你可能早被 PHAR 或系统包覆盖了
• 多年没更新、GitHub 上零 issue、也没人在项目里复用的包,直接 composer global remove vendor/package-name

















