You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行laravel new app时遇curl error 60 SSL证书匹配问题求助

Laravel new 命令报curl error 60(SSL证书不匹配)问题排查与解决

报错信息

执行 laravel new app 时出现如下错误:

Failed to download laravel/laravel from dist: curl error 60 while downloading https://codeload.github.com/laravel/laravel/legacy.zip/37ab32cf760406f767f6a278748546214585c93f: SSL: no alternative certificate subject name matches target host name 'codeload.github.com'

直接访问 codeload.github.com 时浏览器提示页面不安全。

Composer 诊断结果

执行 composer diagnose --vvv 输出如下:

Running 2.5.4 (2023-02-15 13:10:06) with PHP 8.2.0 on Windows NT / 10.0
Loading config file C:/Users/Admin/AppData/Roaming/Composer/config.json
Loading config file C:/Users/Admin/AppData/Roaming/Composer/auth.json
Reading C:/Users/Admin/AppData/Roaming/Composer/composer.json (C:\Users\Admin\AppData\Roaming\Composer\composer.json)
Loading config file C:/Users/Admin/AppData/Roaming/Composer/config.json
Loading config file C:/Users/Admin/AppData/Roaming/Composer/auth.json
Loading config file C:/Users/Admin/AppData/Roaming/Composer/composer.json (C:\Users\Admin\AppData\Roaming\Composer\composer.json)
Loading config file C:\Users\Admin\AppData\Roaming\Composer\auth.json
Reading C:\Users\Admin\AppData\Roaming\Composer\auth.json (C:\Users\Admin\AppData\Roaming\Composer\auth.json)
Checked CA file C:\xampp\apache\bin\curl-ca-bundle.crt: valid
Executing command (C:/Users/Admin/AppData/Roaming/Composer): git branch -a --no-color --no-abbrev -v
Executing command (C:/Users/Admin/AppData/Roaming/Composer): git describe --exact-match --tags
Executing command (CWD): git --version
Executing command (C:/Users/Admin/AppData/Roaming/Composer): git log --pretty="%H" -n1 HEAD --no-show-signature
Executing command (C:/Users/Admin/AppData/Roaming/Composer): hg branch
Executing command (C:/Users/Admin/AppData/Roaming/Composer): fossil branch list
Executing command (C:/Users/Admin/AppData/Roaming/Composer): fossil tag list
Executing command (C:/Users/Admin/AppData/Roaming/Composer): svn info --xml
Reading C:/Users/Admin/AppData/Roaming/Composer/composer.json (C:\Users\Admin\AppData\Roaming\Composer\composer.json)
Loading config file C:/Users/Admin/AppData/Roaming/Composer/config.json
Loading config file C:/Users/Admin/AppData/Roaming/Composer/auth.json
Loading config file C:/Users/Admin/AppData/Roaming/Composer/composer.json (C:\Users\Admin\AppData\Roaming\Composer\composer.json)
Loading config file C:\Users\Admin\AppData\Roaming\Composer\auth.json
Reading C:\Users\Admin\AppData\Roaming\Composer\auth.json (C:\Users\Admin\AppData\Roaming\Composer\auth.json)
Reading C:/Users/Admin/AppData/Roaming/Composer/composer.lock (C:\Users\Admin\AppData\Roaming\Composer\composer.lock)
Reading C:/Users/Admin/AppData/Roaming/Composer/vendor/composer/installed.json (C:\Users\Admin\AppData\Roaming\Composer\vendor\composer\installed.json)
Reading C:/Users/Admin/AppData/Roaming/Composer/vendor/composer/installed.json (C:\Users\Admin\AppData\Roaming\Composer\vendor\composer\installed.json)
Checking platform settings: OK
Checking git settings: Executing command (CWD): git config color.ui
OK git version 2.39.2
Checking http connectivity to packagist: Downloading http://repo.packagist.org/packages.json
[200] http://repo.packagist.org/packages.json
OK
Checking https connectivity to packagist: Downloading https://repo.packagist.org/packages.json
[200] https://repo.packagist.org/packages.json
OK
Checking github.com rate limit: Downloading https://api.github.com/rate_limit
[200] https://api.github.com/rate_limit
OK
Checking disk free space: OK
Checking pubkeys:
Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0  87719BA6 8F3BB723 4E5D42D0 84A14642
Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B  0C708369 153E328C AD90147D AFE50952
OK
Checking composer version: Downloading https://getcomposer.org/versions
[200] https://getcomposer.org/versions
OK
Composer version: 2.5.4
PHP version: 8.2.0
PHP binary path: C:\xampp\php\php.exe
OpenSSL version: OpenSSL 3.0.7 1 Nov 2022
cURL version: 7.85.0 libz 1.2.12 ssl OpenSSL/3.0.7
zip: extension present, unzip not available, 7-Zip not available

已尝试的操作

  • 下载了CA证书文件,在php.ini中添加如下配置,但问题未解决:
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo="C:\xampp\apache\bin\curl-ca-bundle.crt"
curl.cainfo="C:\xampp\php\extras\ssl\cacert.pem"

解决方案

1. 修复php.ini重复配置

你在php.ini中重复设置了curl.cainfo,仅最后一行会生效。需调整为:

  • 删除其中一行curl.cainfo配置,保留指向cacert.pem的条目。
  • 新增openssl.cafile配置,确保OpenSSL也使用同一证书:
[curl]
curl.cainfo="C:\xampp\php\extras\ssl\cacert.pem"

[openssl]
openssl.cafile="C:\xampp\php\extras\ssl\cacert.pem"

修改后重启Apache/PHP服务。

2. 排查DNS解析问题

证书主体不匹配的核心原因大概率是DNS解析错误,导致codeload.github.com指向了非官方IP:

  • 执行ping codeload.github.com,检查返回IP是否属于GitHub官方IP段。
  • 若IP异常,切换DNS服务器(如114.114.114.114或8.8.8.8),然后刷新DNS缓存:
ipconfig /flushdns

3. 临时绕过SSL验证(应急方案)

若以上方法无效,可临时让Laravel安装器跳过SSL验证(不推荐长期使用):

laravel new app --insecure

4. 手动安装Laravel

如果网络问题无法解决,可手动完成安装:

  • 下载Laravel仓库的压缩包并解压到目标目录。
  • 进入目录执行composer install安装依赖。

内容的提问来源于stack exchange,提问作者patso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:21:26