Ошибка обновления композитора при обновлении из пакета

При выполнении установки/обновления композитора у меня есть следующая ошибка от openssl:

Файл https://packagist.org/packages.json не может быть загружен: операция SSL завершилась неудачно с кодом 1. OpenSSL Сообщения об ошибках: Ошибка: 14090086: SSL-процедуры: SSL3_GET_SERVER_CERTIFICATE: проверка сертификата не выполнена Не удалось включить криптографию не удалось открыть поток: операция завершилась неудачно https://packagist.org не может быть полностью загружен, информация о пакете была загружена из локального кеша и может быть устаревшей

Я использую:

  • PHP 5.6.3 (cli) (построено: 17 ноября 2014 15:16:53)
  • Стек XAMPP 5.6.3-0
  • ubuntu 14.04

композитор 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 все нормально.

Ответ 1

Я нашел решение для этого

Я бегу:
FreeBSD 10.1
Apache2.4
PHP 5.6.3

Чтобы найти файл CA, я выполнил эту команду

> locate cacert.pem

Результат:
/usr/local/lib/perl 5/site_perl/5.16/Mozilla/CA/cacert.pem

Затем откройте файл php.ini и
измените это:

; openssl.cafile =

Для этого:

openssl.cafile =/USR/локальные/Library/perl5/site_perl/5,16/Mozilla/СА/cacert.pem

Примечание. Эта директива доступна только на php 5.6.x

Затем перезапустите Apache

Ответ 2

Я решил проблему с ошибкой SSL, добавив сертификат SSL в папку сертификатов XAMPP.

// 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

Не забудьте перезапустить апач!

Ответ 3

Я использую 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

Вот оно. Теперь, когда вы запустите обновление композитора, он будет работать нормально.

Ответ 4

Добавление файла openssl.ca в php.ini тоже сработало для меня. Вместо поиска файла сертификата я скачал его напрямую:

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

а затем просто указав для него параметр openssl.cafile.

Ответ 5

composer clearcache

Это работало для меня, когда я получаю ошибку:

https://packagist.org не может быть полностью загружен, информация о пакете была загружена из локального кеша и может быть устаревшей

Ответ 6

На mac с XAMPP:

cd /Applications/XAMPP/xamppfiles/share/openssl

sudo curl -O -k http://curl.haxx.se/ca/cacert.pem

sudo mv cacert.pem cert.pem

Остановить и перезапустить Apache

Ответ 7

Я столкнулся с той же самой проблемой в Windows даже после добавления действительного последнего загруженного сертификата. Я запускаю composer за прокси, поэтому мне нужно добавить переменные окружения 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) Нажмите на сертификаты действительные

enter image description here

4) Откройте вкладку "Путь к сертификату", и вы увидите следующие уровни пути

enter image description here

5) Необходимо экспортировать сертификат для 1 и 2, отмеченных на изображении

6) Чтобы экспортировать сертификат, нажмите на просмотр сертификата, перейдите на вкладку "Сведения" и нажмите "Копировать в файл".

enter image description here

7) выбрать кодировку BASE 64

enter image description here

8) нажмите Next и сохраните этот файл в папке. Сделайте это для No. (2), показанного в setp 4

enter image description here

9) Откройте файл.cer и скопируйте содержимое в конец файла.crt, который вы использовали для настройки в php.ini.

Затем попробуйте запустить comport install - у меня сработало

Процесс должен быть таким же, если вы видите, что composer выдает ошибку ssl при доступе к сайтам через прокси.

Ответ 8

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

Ответ 9

Сначала. Проверьте расположение файла сертификата, которое будет находиться в 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

** FROM https://github.com/composer/composer/issues/3346 **

Ответ 10

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

Ответ 11

Для нас эта проблема, похоже, повлияла на один из наших частных репозиториев. Возможно, это имело какое-то отношение к сертификатам или корпоративному брандмауэру, но это показалось прерывистым, поэтому мы не смогли подтвердить, прежде чем нашли другое исправление.

Внутри composer.json мы изменили URL-адрес репозитория с https на ssh-вариант и добавили параметр "no-api": true:

"repositories": [
    {
      "type": "vcs",
      "url": "[email protected]:our-user/our-repo.git",
      "no-api": true
    }
]

С помощью этого редактирования операции обновления/установки композитора были успешно завершены.

Ответ 12

Просто добавьте эту конфигурацию в ваш файл composer.json.

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

Вот полный пример работающего файла composer.json

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