composer require是唯一安全安装新包的方式,它仅修改composer.json、下载包至vendor/并更新composer.lock,不改动其他依赖;误用install或update会引发线上崩坏。

composer require 是唯一安全的安装方式
别用 composer install 或 composer update 装新包,它们会动已有依赖版本,线上可能直接崩。只用 composer require vendor/package,它只改三处:写进 composer.json、下到 vendor/、更新 composer.lock,不碰其他包。
常见错误现象:
-
Could not parse version constraint:多半是包名拼错,比如把maatwebsite/excel写成maatwebsite\excel(反斜杠)或漏掉 vendor 前缀 - 命令跑完但
vendor/里没文件:PHP 版本不够、openssl 扩展没开、或网络超时(国内必须配镜像)
执行前确认这三件事:
- 当前路径下能看见
composer.json(ls -la | grep composer.json或dir composer.json) -
composer --version有输出,且php -v≥ 7.2.5 -
php -m | grep -E "openssl|json|phar"全部命中,缺一个composer require就会静默失败
装完类找不到?不是没装上,是没 autoload 或没注册
很多包 require 成功后直接用会报 Class 'XXX' not found,这不是安装失败,是 PHP 自动加载机制没生效。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先跑
composer dump-autoload:尤其当你本地加了自定义命名空间,或刚装完包但vendor/autoload.php还不知道新类在哪 - Laravel 8 及更早:必须手动往
config/app.php的'providers'和'aliases'数组里加对应项,比如SocialiteServiceProvider::class - Laravel 9+ 默认 auto-discovery,但如果你在
composer.json里写了"dont-discover": ["*"],那所有包都得手配——这个字段极容易被忽略,一加就是全局关死
国内网络必须切镜像,否则卡死在 downloading
直连 packagist.org 基本超时,composer require 会卡住不动或报 Connection timeout。
- 设阿里云镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 换完立刻清缓存:
composer clear-cache - 验证是否生效:运行
composer require monolog/monolog -v,看日志里下载地址是不是mirrors.aliyun.com
注意:config -g 是全局设置,不用每个项目重复跑;如果某项目需单独镜像,去掉 -g 改为项目级配置。
某些包要额外 publish 配置或打补丁
装完只是第一步,有些包自带配置文件或需 patch 修改底层依赖,跳过就运行不了。
- 比如
maatwebsite/excel:require 后必须php artisan vendor:publish --provider="Maatwe...(命令补全靠 tab 或查文档),否则导出功能直接报错 - 比如要用
cweagans/composer-patches打第三方包的 fix:先composer require cweagans/composer-patches,再在composer.json的extra里加patches字段,最后composer install或composer update --lock才真正应用 - WordPress 插件类包(如
type: wordpress-plugin):需提前装composer/installers,否则包会被塞进vendor/而非wp-content/plugins/
版本号写错一个字符,比如 :dev-main 换成 :dev-master,或者少个 ^,composer require 就会卡在解析阶段,光标不动也不报错——这是最隐蔽的卡点。










