报错关键词直接决定排查路径:如“Your requirements could not be resolved”属依赖冲突,需用composer why-not定位;“Permission denied”是文件属主错误,应chown修复;“file could not be downloaded”多因镜像未生效或缓存损坏,须-vvv验证真实请求地址并清缓存删lock。

报错关键词直接决定排查路径
看到错误信息别急着 Google,先盯住最前面几个词——它基本就锁定了问题类型。比如 Your requirements could not be resolved 是依赖约束打架,Permission denied 是文件归属错了,Connection refused 是系统连不通,file could not be downloaded 大概率是镜像没配对或缓存坏掉了。
这些不是模糊提示,而是 Composer 明确告诉你:哪一层断了。跳过关键词直接删 vendor、重装 Composer,90% 是白忙。
用 -vvv 看真实请求地址,别信 config 输出
composer install -vvv 才是真相开关。它会打印出每一步实际发出去的 URL,比如第一行 Downloading https://packagist.org/packages.json 就说明根本没走你配的阿里云镜像。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
composer config -g repo.packagist输出是{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}≠ 镜像生效;只有-vvv里出现mirrors.aliyun.com才算真走对了 - 项目根目录
composer.json里只要存在"repositories": [](哪怕空数组),全局配置就彻底失效 - CI/CD 或宝塔环境里,
sudo composer config -g配的是 root 的配置,但实际跑命令的是www用户,得用sudo -u www composer config -g
删 vendor 和 composer.lock 不是万能解,但有时必须做
缓存清了、镜像切了、PHP 版本也对了,composer install 还卡在同一个包?大概率是 composer.lock 里还记着旧 provider 地址或损坏的 hash 值。
-
composer.lock不是日志,它是“安装契约”——里面硬编码了每个包的下载地址、SHA256 校验值、PHP 平台要求。换镜像后不删它,Composer 就会执着地去旧地址拉包 - 删之前确认 Git 已提交:如果
composer.lock没进版本库,composer install会自动 fallback 到update行为,结果不可控 - Windows 下删
vendor后仍报realpath() returned false,很可能是路径含中文或特殊符号,换到C:\work\myapp这类纯英文路径再试
PHP CLI 环境和 Web 环境不是一回事
你在浏览器里打开 phpinfo() 页面看到 mbstring 已启用,不代表 composer install 能用——CLI 和 FPM/CGI 加载的 php.ini 文件通常不同。
- 运行
php -v和php -m | grep -E "mbstring|openssl|curl|json",这才是 Composer 真实依赖的环境 -
composer diagnose会明确列出缺失扩展,但它不会检查 CLI 的php.ini是否加载了正确路径;用php --ini确认实际读取的配置文件位置 - 某些错误如
file_put_contents(): Only variables should be passed by reference其实是镜像返回了 HTML(比如人机验证页),不是 PHP 语法问题——换源就能解决

















