composer config -g secure-http false 仅禁用 Composer 对仓库协议的强制 HTTPS 校验,不解决 OpenSSL 层的 SSL 证书验证失败(如 cURL error 60),也不影响离线时的网络请求行为;真正绕过 SSL 校验需用 COMPOSER_NO_SSL=1 或 --no-secure-http,离线则必须设 COMPOSER_DISABLE_NETWORK=1 并清理 composer.lock 和 vendor/。

composer config -g secure-http false 为什么有时没用
这个命令只关闭 Composer 对仓库协议的强制校验,即允许你配置 http:// 源,但它不干预 PHP 底层的 HTTPS 连接行为。如果你看到的是 SSL certificate verify failed 或 cURL error 60,问题出在 OpenSSL 证书验证环节,不是 secure-http 控制的范围。
常见误判场景:
- 你以为改了
secure-http就能绕过证书错误,结果composer install依然失败 - 你在离线环境设了
secure-http false,但没设COMPOSER_DISABLE_NETWORK=1,Composer 仍尝试请求远程packages.json并卡在 SSL 验证 - 全局镜像源配置残留(如
https://packagist.phpcomposer.com)导致请求发向已下线地址,报 404 而非 SSL 错误,但你误以为是协议问题
真正禁用 HTTPS 协议校验的两种有效方式
必须明确:禁用 SSL 校验 = 削弱传输安全性,仅限调试或可信内网。生产环境应更新 CA 证书或修复 OpenSSL 配置。
推荐按优先级顺序尝试:
- 单次命令跳过(作用域最小):
composer install --no-secure-http—— 注意:它只对部分仓库配置生效,且不解决底层 cURL/PHP stream 的证书失败 - 环境变量强制绕过(更底层):
COMPOSER_NO_SSL=1 composer install(Linux/macOS)或set COMPOSER_NO_SSL=1 && composer install(Windows CMD)—— 这会直接影响 Composer 启动时的 stream 上下文配置
⚠️ 不要混用:--no-secure-http 和 COMPOSER_NO_SSL=1 同时设不会叠加效果,后者已覆盖前者。
离线环境下 secure-http 设置完全无效的原因
很多人在断网后运行 composer install 仍报 SSL 错误,根本原因是:Composer 默认不“自动离线”。它会坚持发起 HTTPS 请求,直到超时或证书失败。
必须提前设置:COMPOSER_DISABLE_NETWORK=1
否则:
-
composer config -g secure-http false白设 —— 因为网络未禁用,Composer 仍会尝试连接https://repo.packagist.org/packages.json - 即使 vendor/ 和 composer.lock 都存在,也会因元数据校验失败而中断
- 某些插件(如
phpstan/extension-installer)会在--no-plugins外部触发网络调用,所以离线命令必须带--no-plugins
最小安全离线命令组合:COMPOSER_DISABLE_NETWORK=1 composer install --no-plugins --no-scripts --no-autoloader
404 Forbidden 错误不是协议问题,而是源失效
看到 404 Forbidden 就去关 HTTPS,是典型归因错误。这类错误 95% 来自镜像源域名已停服,比如:
-
https://packagist.phpcomposer.com(2022 年起返回 404) -
https://packagist.laravel-china.org(同上)
验证方法很简单:composer config -g repo.packagist,输出里有上述任一地址,就直接删掉重配。
更重要的是:composer.lock 文件里硬编码了 provider 地址。换源后不删 composer.lock,Composer 仍会优先请求 lock 里那个已死的 URL —— 所以必须删 vendor/ + composer.lock,再 composer install。
别信“清缓存”“重试”“换 DNS”,锁文件里的路径是静态写死的,不重建就永远走不通。


















