Вопрос или проблема
Когда я пытаюсь установить Composer в Windows 11 Professional, возникает следующая ошибка:
Сценарий установки Composer завершился неудачно [код выхода 1].
OpenSSL не удалось с ошибкой 'certificate verify failed'.
Это указывает на проблему с файлом(ами) центра сертификации на вашей системе,
которые могут быть устаревшими.
Расположение сертификата [из установки openssl.cafile ini]:
D:\xampp\apache\bin\curl-ca-bundle.crt
php.ini, используемый вашим командным PHP: D:\xampp\php\php.ini
Вывод скрипта:
Файл "https://getcomposer.org/versions" не удалось загрузить:
Операция SSL завершилась с ошибкой код 1.
Сообщения об ошибках OpenSSL:
ошибка:0A000086:SSL routines::certificate verify failed
Не удалось включить шифрование
Не удалось открыть поток: операция не удалась
Я переустановил XAMPP на свой компьютер.
Затем попробовал обновить файл сертификата, используя https://curl.se/docs/caextract.html и переименовав файл curl-ca-bundle.crt. Я также добавил этот сертификат в Диспетчер сертификатов Windows, но это не помогло.
Затем я попробовал установить через командную строку:
curl -sS getcomposer.org/installer | PHP
Я получаю следующую ошибку:
curl: (35) schannel: next InitializeSecurityContext failed: CRYPT_E_NO_REVOCATION_CHECK (0x80092012) - Функция проверки аннулирования не смогла проверить аннулирование сертификата.
Я запустил следующее на сертификате, чтобы проверить, был ли он аннулирован:
certutil -f -urlfetch -verify -t 30 D:\xampp\apache\bin\curl-ca-bundle.crt
И это дает:
“Не удается проверить статус аннулирования конечного сертификата.”
Я обнаружил, что если создать .curlrc и добавить строку ssl-no-revoke, это предотвращает проверку сертификата на аннулирование, дополнительно установить две глобальные переменные CURL_CA_BUNDLE и SSL_CERT_FILE на файл D:\xampp\apache\bin\curl-ca-bundle.crt, эти две вещи позволили мне заставить работать командную строку curl, позволяя загрузку установщика. Но поскольку установщик использует PHP, он все равно не работает, выдавая следующую ошибку, которая препятствует запуску установщика:
Файл “https://getcomposer.org/versions” не удалось загрузить: операция SSL завершилась с ошибкой код 1. Сообщения об ошибках OpenSSL: ошибка:0A000086:SSL routines::certificate verify failed
Это заставляет меня думать, что в PHP произошла ошибка конфигурации. Но я не смог ее найти.
Мне удалось установить Composer, изменив установочный скрипт на Composer Download (изменения ниже), проблема в том, что ошибка сертификата сохраняется, и другие файлы не могут быть загружены с помощью Composer.
<?php
$pemFile="D:\xampp\apache\bin\curl-ca-bundle.crt";
// Создать контекст потока с опциями SSL
$contextOptions = [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
'cafile' => $pemFile,
],
];
$context = stream_context_create($contextOptions);
$argv = array("--cafile=" . $pemFile, '--disable-tls');
copy('https://getcomposer.org/installer', './composer-setup.php', $context);
if (hash_file('sha384', './composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') {
include('./composer-setup.php');
unlink('./composer-setup.php');
}
Ошибка Composer при попытке загрузки:
ошибка curl 60 при загрузке https://getcomposer.org/versions: Проблема с SSL-сертификатом: не удается получить сертификат локального центра
У вас есть антивирус на этом компьютере с Windows 11? Если да, можете ли вы временно отключить антивирусное ПО и попробовать установить Composer снова.
Кроме того, вы, кажется, используете старый (странный?) метод установки Composer; попробуйте установить его через новый метод для Composer 2.8.4, описанный на официальном сайте Composer.
Вот новый метод, описанный для Composer 2.8.4:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Ответ или решение
Причины, по которым вы сталкиваетесь с проблемами установки Composer на XAMPP под управлением Windows 11, связаны с ошибками сертификатов OpenSSL. Давайте подробнее рассмотрим, в чем может заключаться проблема и как ее можно устранить.
Проблема:
- Ошибка: "certificate verify failed" — это указывает на проблему с файловым хранилищем сертификата удостоверяющего центра на вашей системе.
- Местоположение сертификата OpenSSL: ваш PHP на командной строке использует сертификат, находящийся в
D:\xampp\apache\bin\curl-ca-bundle.crt
. - Ошибка CRYPT_E_NO_REVOCATION_CHECK — это свидетельствует о том, что функция проверки отзыва сертификатов не может проверить отзыв конкретного сертификата (возможно, из-за неправильно настроенного хранилища сертификатов).
Решение:
-
Проверьте файл сертификата: Убедитесь, что файл
curl-ca-bundle.crt
обновлен. Вы сделали правильный шаг, скачав файл сертификата с официального сайта curl. Однако убедитесь, что путь к файлу указан корректно в конфигурации PHP. -
Настройка php.ini:
- Откройте
D:\xampp\php\php.ini
. - Найдите строки, связанные с
openssl.cafile
иopenssl.capath
и убедитесь, что они указывают на правильный и действительный файл и путь.
- Откройте
-
Проверка прав доступа:уверьтесь, что файл
curl-ca-bundle.crt
доступен для чтения вашим PHP, работающим на командной строке. Возможно, потребуются изменения в разрешениях файлов. -
Обновите OpenSSL: Разные версии OpenSSL могут иметь разные требования к сертификатам. Убедитесь, что у вас установлена последняя версия OpenSSL на Windows и что XAMPP настроен с учетом этой версии.
-
Проверка системы: Временно отключите антивирусное ПО, чтобы проверить его влияние на процессы проверки сертификатов.
-
Попробуйте новую методику установки Composer: Используйте современный способ установки Composer, как рекомендовано на официальном сайте. Это может решить проблему, если она связана со старым методом установки.
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Заключение
Ваши проблемы могут быть связаны с неверной или поврежденной настройкой, а также с настройками системы безопасности. Следующее решение проблемы заключается в том, чтобы проверить и обновить конфигурации сертификатов и OpenSSL. Применяйте современный подход к установке Composer и внимательно следите за обновлениями программного обеспечения.