从packagist更新时,Composer更新失败

yuk*_*lia 31 php xampp openssl composer-php php-5.6

在执行composer install/update时,我从openssl得到以下错误:

无法下载" https://packagist.org/packages.json "文件:SSL操作失败,代码为1. OpenSSL错误消息:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败无法启用加密失败打开stream:操作失败 https://packagist.org无法完全加载,包信息是从本地缓存加载的,可能已过期

我在用:

  1. PHP 5.6.3(cli)(内置:2014年11月17日15:16:53)
  2. XAMPP堆栈5.6.3-0
  3. ubuntu 14.04

作曲家诊断显示:

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: 
Run Code Online (Sandbox Code Playgroud)

[Composer\Downloader\TransportException] 无法下载
" https://getcomposer.org/version "文件:SSL操作失败,代码为1. OpenSSL错误消息:
错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败
失败enable crypto
无法打开流:操作失败

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) ""
}
Run Code Online (Sandbox Code Playgroud)

对于PHP 5.5.19一切都很好.

Man*_*hoa 27

我找到了解决方案

我正在运行:
FreeBSD 10.1
Apache2.4
PHP 5.6.3

要查找CA文件,我运行了此命令

> locate cacert.pem

结果是:
/usr/local/lib/perl5/site_perl/5.16/Mozilla/CA/cacert.pem

然后打开php.ini文件并
更改:

; openssl.cafile =

对此:

openssl.cafile =的/ usr /本地/ LIB /的perl5/SITE_PERL/5.16/Mozilla浏览器/ CA/cacert.pem

注意:该指令仅适用于php 5.6.x.

然后重启Apache

  • 我在MAC上使用PHP版本5.6.3.但无法找到openssl.cafile = (2认同)

kip*_*zes 11

我通过将SSL证书添加到XAMPP证书文件夹解决了SSL错误的问题.

// navigate to a directory to save the certificate
cd /Downloads

// download a certificate
wget http://curl.haxx.se/ca/cacert.pem

// rename and move the file to the Xampp certificates folder
mv cacert.pem /Applications/XAMPP/xamppfiles/share/openssl/cert.pem
Run Code Online (Sandbox Code Playgroud)

别忘了重启你的apache!

  • 谢谢!有关信息,在Linux上的路径是:sudo mv cacert.pem /opt/lampp/share/openssl/cert.pem (2认同)

Nee*_*eel 9

我正在使用Mac OS Sierra,当我尝试使用命令更新作曲家时,/usr/local/bin/composer self-update我一直收到错误:

[Composer\Downloader\TransportException]                                                          
  The "https://getcomposer.org/version" file could not be downloaded: SSL operation failed with co  
  de 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  
Run Code Online (Sandbox Code Playgroud)

我按照以下步骤修复了它:

1)使用以下命令创建本地数据库:

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
Run Code Online (Sandbox Code Playgroud)

2)找到证书文件:

locate cacert.pem 
Run Code Online (Sandbox Code Playgroud)

3)检查php.ini文件的位置:

php --ini
Run Code Online (Sandbox Code Playgroud)

4)如果文件的"已加载配置文件" php.ini显示为(none),则将文件复制/etc/php.ini.default/etc/php.ini:

sudo cp /etc/php.ini.default /etc/php.ini
Run Code Online (Sandbox Code Playgroud)

5)打开php.ini文件并;openssl.cafile=通过取消注释并将链接附加到cert文件位置来编辑该 行:

openssl.cafile=/Users/me/.composer/cacert.pem
Run Code Online (Sandbox Code Playgroud)

而已.现在,当您运行编辑器更新时,它将正常工作.


Pra*_*ind 7

即使添加了下载的有效最新证书后,我在 Windows 上也遇到了同样的问题。我在代理后面运行作曲家,所以我必须添加环境变量 http_proxy 和 https_proxy。

我的环境: PHP 5.6.33 Windows 7 64 位 Composer 版本 1.6.3 2018-01-31 16:28:17

我下载了最新的证书CA Bundle并更新了 php.ini 中的以下路径仍然不起作用。

curl.cainfo = C:\Certificates\ca-bundle.crt
openssl.cafile= C:\Certificates\ca-bundle.crt
openssl.capath=C:\Certificates
Run Code Online (Sandbox Code Playgroud)

然后做了以下步骤

1) 打开 Chrome 浏览器并导航https://packagist.org/

2) 单击安全锁小图标

3) 单击证书有效

在此输入图像描述

4)打开证书路径选项卡,您将看到以下路径级别

在此输入图像描述

5)需要导出图中标记的1和2的证书

6) 要导出证书,请单击“查看证书”,转到“详细信息”选项卡,然后单击“复制到文件”

在此输入图像描述

7)选择BASE 64编码

在此输入图像描述

8) 单击“下一步”并将该文件保存到某个位置,对第 4 步中所示的第 (2) 号执行此操作

在此输入图像描述

9)打开.cer文件并将内容复制到您用于在php.ini中配置的.crt文件的末尾

然后尝试运行 comport install - 它对我有用

如果您在通过代理访问站点时看到 Composer 抛出 ssl 错误,则过程应该是相同的。


pho*_*nix 5

将 openssl.cafile 添加到 php.ini 也对我有用。我没有寻找cert文件,而是直接下载了它:

curl http://curl.haxx.se/ca/cacert.pem > cacert.pem

然后只是将 openssl.cafile 设置指向它。


小智 5

1.

php -r "print_r(openssl_get_cert_locations());"
Run Code Online (Sandbox Code Playgroud)
array(8) {
  ["default_cert_file"]=>
  string(31) "/usr/local/etc/openssl/cert.pem"
  ...
}
Run Code Online (Sandbox Code Playgroud)

2.vim php.ini

[openssl]
openssl.cafile=/usr/local/etc/openssl/cert.pem
Run Code Online (Sandbox Code Playgroud)