执行composer install / update时,我从openssl得到以下错误:
" https://packagist.org/packages.json"无法下载文件:SSL操作失败,代码为1. OpenSSL错误消息: 错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败 无法启用加密 无法打开流:操作失败 https://packagist.org无法完全加载,包信息是从本地缓存加载的,可能已过期
我正在使用:
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:
[作曲\下载\ 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,一切都很好。
答案 0 :(得分: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
答案 1 :(得分: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
别忘了重启你的apache!
答案 2 :(得分: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
我按照以下步骤修复了它:
1)使用以下命令创建本地数据库:
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
2)找到证书文件:
locate cacert.pem
3)检查php.ini文件的位置:
php --ini
4)如果加载配置文件' php.ini
文件显示为(none)
,将文件/etc/php.ini.default
复制到/etc/php.ini
:
sudo cp /etc/php.ini.default /etc/php.ini
5)打开php.ini
文件并编辑;openssl.cafile=
行,取消注释并将链接附加到证书文件位置:
openssl.cafile=/Users/me/.composer/cacert.pem
多数民众赞成。现在,当您运行编辑器更新时,它将正常工作。
答案 3 :(得分:4)
将openssl.ca文件添加到php.ini也适用于我。 我没有查找证书文件,而是直接下载了它:
curl http://curl.haxx.se/ca/cacert.pem> cacert.pem
然后只是将openssl.cafile设置指向它。
答案 4 :(得分:1)
在使用XAMPP的Mac上:
cd /Applications/XAMPP/xamppfiles/share/openssl
sudo curl -O -k http://curl.haxx.se/ca/cacert.pem
sudo mv cacert.pem cert.pem
停止并重启Apache
答案 5 :(得分:1)
即使添加了下载的有效最新证书,我在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
然后按照以下步骤操作
1)打开Chrome浏览器并导航https://packagist.org/
2)单击安全锁小图标
3)单击证书有效
4)打开“证书路径”标签,您将看到以下路径级别
5)需要导出图像中标记的1&2证书
6)要导出证书,请单击查看证书,转到详细信息选项卡,然后单击复制到文件
7)选择BASE 64编码
8)单击“下一步”,然后将该文件保存到一个位置,对setp 4中显示的编号(2)执行此操作。
9)打开.cer文件,然后将内容复制到用于在php.ini中配置的.crt文件的末尾
然后尝试运行comport install-对我有用
如果通过代理访问网站时看到作曲家抛出ssl错误,则过程应该相同。
答案 6 :(得分:1)
1。
php -r "print_r(openssl_get_cert_locations());"
array(8) {
["default_cert_file"]=>
string(31) "/usr/local/etc/openssl/cert.pem"
...
}
2.vim php.ini
[openssl]
openssl.cafile=/usr/local/etc/openssl/cert.pem
答案 7 :(得分:0)
首先:检查将在default_cert_file
密钥中的证书文件位置,您将在openssl_get_cert_locations()
中找到它的php openssl函数。您可以按如下方式运行它:
$ php -r "print_r(openssl_get_cert_locations());"
我系统中的输出
Array
(
[default_cert_file] => /opt/lampp/share/openssl/cert.pem
[default_cert_file_env] => SSL_CERT_FILE
[default_cert_dir] => /opt/lampp/share/openssl/certs
[default_cert_dir_env] => SSL_CERT_DIR
[default_private_dir] => /opt/lampp/share/openssl/private
[default_default_cert_area] => /opt/lampp/share/openssl
[ini_cafile] =>
[ini_capath] =>
)
第二次:下载http://curl.haxx.se/ca/cacert.pem:
$ wget http://curl.haxx.se/ca/cacert.pem
第三次:将certificate.pem
文件复制到default_cert_file
位置:
$ sudo mv cacert.pem /opt/lampp/share/openssl/cert.pem
答案 8 :(得分:0)
locate cacert.pem
vi /usr/local/lib/php.ini
#add this
openssl.cafile=/usr/local/share/perl5/Mozilla/CA/cacert.pem
# press esc then type
:wq #enter
curl -sS https://getcomposer.org/installer | php -- —version=1.0.0-alpha10
mv composer.phar /usr/local/bin/composer
alias composer='/usr/local/bin/composer'
composer -V
php /usr/local/bin/composer global self-update
cd .composer/
composer init
答案 9 :(得分:0)
对我们来说,这个问题似乎只影响我们的一个私人存储库。它可能与证书或公司防火墙有关,但它似乎是间歇性的,所以我们在找到不同的修复程序之前无法确认。
在composer.json中,我们将存储库URL从https更改为ssh变体并添加了"no-api": true
选项:
"repositories": [
{
"type": "vcs",
"url": "git@github.com:our-user/our-repo.git",
"no-api": true
}
]
通过该编辑,作曲家更新/安装操作能够成功完成。
答案 10 :(得分:0)
答案 11 :(得分: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
}
}
```