必须在含composer.json的项目根目录执行composer require,否则静默失败;需显式指定版本约束、区分--dev、执行dump-autoload并确认autoload引入。

直接用 composer require 就行,但必须在含 composer.json 的项目根目录执行,否则包写错位置、锁文件不同步、类根本加载不到——这不是报错,是静默失败。
执行前先确认当前目录有 composer.json
很多人在 src/ 或 tests/ 里运行 composer require,结果它真给你新建一个 composer.json 在当前子目录,而你项目真正的依赖配置还在上层。终端里跑 ls -l composer.json 或 pwd 看一眼最省事。
- 没找到
composer.json?先composer init初始化,别手写 JSON 后跳过安装 - CI 脚本里建议加
test -f composer.json || { echo "Missing composer.json"; exit 1; }防止静默出错 - 私有包或非 Packagist 源需提前在
composer.json里配repositories,否则require直接报 “Could not find package”
composer require 版本号不写对,第二天 CI 就炸
不写版本号(如 composer require monolog/monolog)会让 Composer 自行选最新稳定版,可能今天装 ^3.0,明天上游发了 3.1 就移除了你正在用的 Logger::addInfo()。显式约束才是生产环境底线。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
guzzlehttp/guzzle:^7.5.0→ 允许7.5.x到7.999.999,不跨8.0 -
monolog/monolog:~2.9.0→ 只允许2.9.x,连2.10.0都不进 -
phpunit/phpunit:dev-main→ 仅调试用,main分支随时变,上线前必须换回稳定约束 - 别写
2.9.*:Composer 已弃用通配符,会被当字面量解析,大概率报 “Could not parse version constraint”
--dev 不是可选项,是部署安全线
composer require --dev phpunit/phpunit:^10 和 composer require phpunit/phpunit:^10 表面只差两个字,实际决定线上环境会不会因找不到测试类而崩溃。
- 没加
--dev→ 写进"require"字段 →composer install --no-dev也会装 → 线上多一堆无用类、autoload 映射膨胀、甚至因平台限制(如缺少 ext-dom)直接报错 - 该进
require-dev的包包括:phpunit/phpunit、friendsofphp/php-cs-fixer、phpstan/phpstan - 如果某包既在
require又在require-dev中出现,最终生效的是require里的版本约束
装完类还是 Class not found?不是没装,是 autoload 没注册
composer require 下载完包、更新完 composer.lock,但不会自动重生成 vendor/autoload.php 里的映射——哪怕包自身定义了 "psr-4": {"Monolog\": "src/"},也得靠 dump-autoload 这一步“告诉”自动加载器去哪找。
- 新增包后必跑:
composer dump-autoload - 如果你自己项目改过
autoload段(比如加了"files"或新"psr-4"),这步更是刚需 - 确认入口文件里真包含了:
require 'vendor/autoload.php';,漏写这行,前面全白干 - 某些本地开发包用
path类型仓库时,require后得composer update vendor/name才能重建 symlink
最常被跳过的其实是 dump-autoload 和目录校验——它们不报错,但让问题延迟到运行时才暴露,排查成本翻倍。

















