[英]Composer update fails while updating from packagist
在執行composer install / update時,我從openssl得到以下錯誤:
無法下載“ https://packagist.org/packages.json ”文件:SSL操作失敗,代碼為1. OpenSSL錯誤消息:錯誤:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:證書驗證失敗無法啟用加密失敗打開stream:操作失敗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一切都很好。
我找到了解決方案
我在跑:
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
我通過將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!
我正在使用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=
行,取消注釋並將鏈接附加到cert文件位置:
openssl.cafile=/Users/me/.composer/cacert.pem
而已。 現在,當您運行編輯器更新時,它將正常工作。
將openssl.cafile添加到php.ini也適合我。 我沒有直接下載它,而是查找了cert文件:
卷曲http://curl.haxx.se/ca/cacert.pem > cacert.pem
然后只是指向openssl.cafile設置。
在使用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
即使在添加了有效的最新證書下載后,我也在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)單擊Next並將該文件保存到某個位置,對setp 4中顯示的No.(2)執行此操作
9)打開.cer文件並將內容復制到您在php.ini中配置的.crt文件的末尾
然后嘗試運行comport install - 它對我有用
如果您在通過代理訪問網站時看到作曲家拋出ssl錯誤,則進程應該相同。
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
首先 :檢查將在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
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
對我們來說,這個問題似乎只影響我們的一個私人存儲庫。 它可能與證書或公司防火牆有關,但它似乎是間歇性的,所以我們在找到不同的修復之前無法確認。
在composer.json中,我們將存儲庫URL從https更改為ssh變體,並添加了"no-api": true
選項:
"repositories": [
{
"type": "vcs",
"url": "git@github.com:our-user/our-repo.git",
"no-api": true
}
]
通過該編輯,編寫器更新/安裝操作能夠成功完成。
只需將此配置添加到composer.json文件即可。
"config": {
"secure-http": false
}
這是一個有效的composer.json文件的完整示例
"repositories": [{
"type": "composer",
"url": "http://packagist.org"
}],
"require": {
"phpmailer/phpmailer": "^6.0"
},
"config": {
"secure-http": false
}
}
```
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.