从Packagist更新时,Composer update失败

35
执行composer install/update时,由于openssl出现以下错误:
https://packagist.org/packages.json”文件无法下载:SSL操作失败,代码为1。 OpenSSL错误消息: 错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败 加密启用失败 打开流失败:操作失败 https://packagist.org 无法完全加载,包信息从本地缓存加载,可能已过期
我使用的环境是:
1.PHP 5.6.3(cli)(构建日期:2014年11月17日15:16:53) 2.XAMPP stack 5.6.3-0 3.ubuntu 14.04
composer diag 显示:
Checking composer.json: OK
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity: FAIL
[Composer\Downloader\TransportException] The "https://packagist.org/packages.json"  file  could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Failed to enable crypto
failed to open stream: operation failed
Checking disk free space: OK
Checking composer version: 

[Composer\Downloader\TransportException]
https://getcomposer.org/version”文件无法下载:SSL操作失败,代码为1。 OpenSSL错误消息:
错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败
启用加密失败
流打开失败:操作失败 php -r 'var_dump(openssl_get_cert_locations());' 显示:
array(8) {
["default_cert_file"]=>
string(33) "/opt/lampp/share/openssl/cert.pem"
["default_cert_file_env"]=>
string(13) "SSL_CERT_FILE"
["default_cert_dir"]=>
string(30) "/opt/lampp/share/openssl/certs"
["default_cert_dir_env"]=>
string(12) "SSL_CERT_DIR"
["default_private_dir"]=>
string(32) "/opt/lampp/share/openssl/private"
["default_default_cert_area"]=>
string(24) "/opt/lampp/share/openssl"
["ini_cafile"]=>
string(0) ""
["ini_capath"]=>
string(0) ""
}

对于php 5.5.19一切正常。


请查看此问题:https://github.com/composer/composer/issues/2798 - sectus
如果您正在使用 Kaspersky,请查看此链接:https://stackoverflow.com/a/54791481/3549317 - cespon
12个回答

0
对我们来说,这个问题似乎只影响了我们的一个私有仓库。可能与证书或企业防火墙有关,但它似乎是间歇性的,所以在找到其他解决方法之前,我们无法确认。
在composer.json文件中,我们将仓库URL从https更改为ssh变体,并添加了"no-api": true选项:
"repositories": [
    {
      "type": "vcs",
      "url": "git@github.com:our-user/our-repo.git",
      "no-api": true
    }
]

通过这个编辑,Composer 的更新/安装操作成功完成。


0

只需将以下配置添加到您的composer.json文件中即可。

"config": {
"secure-http": false
}

这是一个有效的composer.json文件的完整示例

  "repositories": [{
    "type": "composer",
    "url": "http://packagist.org"
  }],
  "require": {
    "phpmailer/phpmailer": "^6.0"
  },
  "config": {
    "secure-http": false
  }
}
```

你永远不想选择不安全的路。你要始终修复安全错误,而不是搁置它们并忽略它们。这些错误存在理由! - Danny F

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接