簡體   English   中英

從packagist更新時,Composer更新失敗

[英]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無法完全加載,包信息是從本地緩存加載的,可能已過期

我在用:

  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: 

[作曲\\下載\\ 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設置。

composer clearcache

當我收到錯誤時,這對我有用:

https://packagist.org無法完全加載,包信息是從本地緩存加載的,可能已過期

在使用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

**來自https://github.com/composer/composer/issues/3346 **

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM