Composer报SSL错误90%以上因php.ini中openssl.cafile与curl.cainfo未同时配置、路径不一致或缺失,须用php -r "print_r(openssl_get_cert_locations());"确认ini_cafile和default_cert_file有效性,并统一设为同一绝对路径的最新cacert.pem文件,改后必须重启CLI或Web服务。

php.ini里openssl.cafile和curl.cainfo没配对?
Composer报SSL错误,90%以上是这两个配置项没同时设置、路径不一致或根本没写。PHP原生HTTPS调用走openssl.cafile,Composer底层cURL走curl.cainfo,漏掉任一个都会出问题。
别凭记忆改,先运行php -r "print_r(openssl_get_cert_locations());",看输出里的ini_cafile(php.ini里实际生效的路径)和default_cert_file(PHP默认尝试读的路径)是否为空、指向不存在的文件,或最后修改时间早于2022年。
- Windows常见失效路径:
C:phpEnvphpextrassslcacert.pem(XAMPP/WAMP自带证书多已停更) - Linux/macOS常见路径:
/etc/ssl/certs/ca-certificates.crt或/usr/local/etc/openssl/cert.pem(Homebrew OpenSSL 3默认路径) - 路径必须用英文双引号包裹,Windows单反斜杠会转义,写成
C:/phpEnv/php/extras/ssl/cacert.pem或C:\phpEnv\php\extras\ssl\cacert.pem
证书文件本身过期或损坏?
系统自带或旧版PHP包附带的curl-ca-bundle.crt大多停更于2021年,无法验证ISRG Root X1等新根证书。必须换官方维护的最新包。
下载地址固定为https://curl.se/ca/cacert.pem,不要用浏览器另存为HTML,保存为纯文本UTF-8编码文件。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Linux/macOS:用
curl -sS https://curl.se/ca/cacert.pem -o /usr/local/etc/php/cacert.pem - Windows:用
curl -sS https://curl.se/ca/cacert.pem -o C:/phpEnv/php/extras/ssl/cacert.pem - 验证落地:
php -r "var_dump(file_exists('/path/to/cacert.pem'));"返回bool(true)才算成功
改完php.ini但没生效?
CLI和Web环境可能加载不同php.ini,且改完后必须重启对应服务——仅重载配置(如nginx -s reload)无效。
- CLI模式:关掉当前终端,新开一个再跑
php -v确认 - Apache:执行
sudo apachectl restart(不是graceful) - PHP-FPM:执行
sudo systemctl restart php-fpm或sudo service php7.4-fpm restart - 验证是否真生效:
php -r "echo ini_get('curl.cainfo');"和php -r "echo ini_get('openssl.cafile');"应输出你刚写的绝对路径
镜像源本身已停服,不是证书问题?
有些报错看着像证书失效,其实是镜像站下线了。比如https://packagist.phpcomposer.com和https://packagist.laravel-china.org均已停服,返回空响应或伪造内容,签名自然校验失败。
先确认当前全局镜像:composer config -g repo.packagist,输出应为https://mirrors.aliyun.com/composer/(注意是HTTPS)。
- 如果为空或仍是
https://packagist.org,先切镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证镜像可用性:
curl -I https://mirrors.aliyun.com/composer/packages.json 2>/dev/null | head -1,返回HTTP/2 200才说明端正常 - 若
curl -v https://packagist.org/packages.json也报SSL certificate problem,才是本地证书问题;若它通而镜像不通,就是镜像源问题
composer install,先用composer diagnose看“Connection to HTTPS:// succeeded”是否出现。证书路径和镜像源这两层必须都稳,否则任何临时绕过(比如COMPOSER_DISABLE_TLS=1)都只是掩盖问题。

















