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

Во время выполнения установки / обновления композитора у меня есть следующая ошибка от 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) (построено: 17 ноября 2014 15:16:53)
  2. Стек XAMPP 5.6.3-0
  3. 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: 

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

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

Я бегу:
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 / местные / Библиотека / perl5 / site_perl / 5,16 / Mozilla / СА / cacert.pem

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

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

Я решил проблему с ошибкой 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 

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

Я использую Mac OS Sierra, и когда я пытался обновить композитор, используя /usr/local/bin/composer self-update command /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 

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

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

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

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

На 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

 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 

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

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

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

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

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