报“Connection refused”是Composer仍直连packagist.org被阻断,须验证镜像配置(composer config -g repo.packagist输出完整JSON且含HTTPS结尾斜杠)、清缓存、检查项目级repositories覆盖,并用-vvv确认实际请求域名。

Composer 安装失败,90% 不是 Composer 本身坏了,而是本地环境没对上——先别删 vendor 或重装 PHP,直接看报错关键词定位根因。
报 “Connection refused” 或卡在 “Downloading”
这不是你断网了,是 Composer 还在直连 packagist.org,被国内网络策略阻断。阿里云镜像已停用 HTTP,必须用 HTTPS + 正确格式。
- 运行
composer config -g repo.packagist,输出必须是完整 JSON:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}(注意结尾斜杠、type字段、HTTPS) - 若输出为空或仍是
packagist.org,立刻重设:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 换源后必须清缓存:
composer clear-cache,否则旧 provider 地址仍会被复用 - 检查项目级是否覆盖全局:
composer config repo.packagist(无-g),如果返回非空,说明composer.json里有"repositories"字段,删掉或临时composer config --unset repositories - 验证真实请求地址:
composer install -vvv 2>&1 | grep -i "host\|mirrors",第一行出现的域名才是实际访问目标
报 “cURL error 60” 或 “certificate verify failed”
这是 PHP 的 OpenSSL 扩展找不到可信 CA 证书,和 Composer 配置无关,常见于 Docker、CentOS 或系统时间偏差 >5 分钟的 macOS。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 查证书路径:
php -r "print_r(openssl_get_cert_locations());",重点关注default_cert_file值 - 若路径为空、指向不存在的文件(如
/etc/ssl/certs/ca-certificates.crt但未生成),需手动补全:例如curl -sS https://curl.se/ca/cacert.pem -o /usr/local/etc/openssl/cert.pem,再在php.ini中加openssl.cafile=/usr/local/etc/openssl/cert.pem - 检查系统时间:
date,若偏差超 5 分钟,SSL 握手必失败;CentOS 上可执行sudo ntpdate -s time.nist.gov - 不推荐长期关校验:
composer config -g secure-http false仅用于快速定位,生产环境禁用
报 “Your requirements could not be resolved”
这不是网络问题,是 composer.json 里的版本约束与可用包不兼容,比如写了 "php": ">=8.2",但 CLI 实际调用的是 PHP 8.1。
- 确认 CLI 真实 PHP 版本:
php -v和php --ini(看 Loaded Configuration File),Web 和 CLI 可能加载不同php.ini - 运行
composer why-not php:8.2(把 8.2 换成你目标版本),直接看到哪个包在拦路,例如laravel/framework v11.0 requires php >=8.2 - 检查
composer.json是否含"platform"字段,比如"platform": {"php": "8.1"},这会让 Composer 强制按 8.1 解析兼容性,即使你本地是 8.2 - 临时绕过(仅调试):
composer install --ignore-platform-reqs;但上线前必须让代码真兼容目标环境
报 “Permission denied” 写 vendor/ 或 composer.lock
不是权限不够,是目录“认错了主人”——曾用 sudo composer install 导致属主变成 root,普通用户后续无法写入。
- 报错里带路径的那一行就是线索,例如
file_put_contents(/path/to/vendor/autoload.php): Permission denied→ 直接ls -ld vendor/ - 只要
vendor/、composer.lock或$(composer config --global cache-dir)中任一目录属主为root,就执行:sudo chown -R $USER:$USER vendor/ composer.lock ~/.composer - 永远不要
chmod 777,Composer 会拒绝写入被过度开放的目录 - Windows 用户注意:
%USERPROFILE%\AppData\Roaming\Composer\vendor\bin是隐藏路径,需手动输入资源管理器地址栏才能访问并检查归属
最常被忽略的是:composer diagnose 通过 ≠ composer install 能跑通。它不校验 composer.json 里 require 的 PHP 版本或扩展是否真满足,也不检查磁盘空间是否够解压 vendor——这些得靠 composer install -vvv 日志里 “Resolving dependencies” 卡住的位置来反推。

















