答案是transportexception因secure-http为true时拒绝http镜像源,须改用https镜像(如https://mirrors.aliyun.com/composer/)并带composer类型标识,禁用secure-http仅作高危临时方案。

报 TransportException 且含 “HTTP” 字样
错误里出现 Composer\Downloader\TransportException,同时日志里明确带 http:// 地址(比如 http://packagist.phpcomposer.com),基本就是 secure-http 默认开启后拒绝了非 HTTPS 源。
- 别改
secure-http false—— 这会让所有包下载暴露在中间人攻击下,CI 环境尤其危险 - 必须把镜像地址换成 HTTPS 版本:阿里云是
https://mirrors.aliyun.com/composer/,Laravel China 是https://packagist.laravel-china.org,注意末尾斜杠不能少 - 设置时务必带上
composer类型标识:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,漏掉composer会导致配置被忽略
报错含 “certificate verify failed” 或 “SSL3_GET_SERVER_CERTIFICATE”
这不是网络不通,是 PHP 的 OpenSSL 找不到或校验不了可信证书,常见于系统时间偏差、证书路径错误或企业代理中间人劫持。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(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或ini_cafile指向哪——Windows 下常为空或指向不存在的路径 - 系统时间误差超过 5 分钟就会让证书“未生效”,执行
date确认;Linux 可用sudo ntpdate pool.ntp.org校时 - 证书文件损坏?直接从 curl 官方更新:
wget https://curl.se/ca/cacert.pem -O /path/to/cert.pem,然后在php.ini中显式写openssl.cafile="/path/to/cacert.pem"
换源后仍报 Connection refused 或 cURL error 7
说明请求根本没发出去,不是 Composer 配置问题,而是 DNS、IPv6 或代理层卡死。
-
composer config -g repo.packagist输出必须是你设的 HTTPS 镜像地址,如果不是,说明配置没生效(常见于 Windows 权限不足或用了--global和-g混用) - 执行
ping packagist.org,如果返回unknown host,立刻换 DNS(如8.8.8.8),别折腾composer.json里的repositories - 企业内网若走中间人代理,
curl -v https://mirrors.aliyun.com/composer/会卡在 TLS handshake;临时验证可加环境变量:CURL_IPRESOLVE=4 composer install(强制 IPv4)
Permission denied 写 vendor/ 或 composer.lock
90% 不是权限不够,是目录归属错了——之前用 sudo composer install 导致 vendor/ 或 ~/.composer 被 root 占用,现在普通用户无权覆盖。
- 查归属:
ls -ld vendor/ composer.lock $(composer config --g home),看到root root就确认了 - 修复命令:
sudo chown -R $USER:$USER vendor/ composer.lock $(composer config --g home),别用chmod 777,那会埋安全坑 - 清缓存再重试:
composer clear-cache,否则失败记录还在缓存里,重跑照样失败
TransportException 就盯协议和证书;是 Connection refused 就查 DNS 和镜像配置;是 Permission denied 就立刻检查归属。这些点不串着查,容易在错误方向上浪费半天。










