Я знаю, что этот вопрос встречается повсюду на этом сайте, но все решения не сработали со мной.
Я получаю эту ошибку при запуске установки композитора:
In Factory.php line 650:
The openssl extension is required for SSL/TLS protection
but is not available. If you can not enable the openssl
extension, you can disable this error, at your own risk,
by setting the 'disable-tls' option to true.
Я не знаю, откуда он получает Factory.php, но его нет в каталоге моего проекта.
Я сделал все предложенные решения. Я переименовал файл разработки php.ini моего PHP в php.ini и раскомментировал следующее:
extension=openssl
И так как я на окнах, это тоже:
extension_dir = "ext"
Я также включил SSL через меню Ларагон > Apache > SSL > Включить
Мой файл php.ini находится в моей папке laragon следующим образом:
C:\laragon\bin\php\PHP7\php.ini
Затем я кое-что заметил: когда я щелкаю правой кнопкой мыши по Ларагону для вызова меню и перехожу к php.ini, он говорит, что файл php.ini не найден (хотя он находится в нужном месте). Как видно на прикрепленной фотографии.
Когда все это не сработало, я увидел другое предложенное решение, в котором говорилось также о добавлении файла php.ini в каталог Apache в Ларагоне, например:
C:\laragon\bin\apache\httpd-2.4.54-win64-VS16\bin\php.ini
Обратите внимание, что я перезагружаю Apache каждый раз.
И я все еще получаю ошибку.
В чем может быть проблема? Я не хочу отключать tls и понятия не имею, что такое файл Factory.php.
Любая помощь приветствуется. Спасибо.
Я думаю, что в этом случае вам не хватает сертификата для вашего экземпляра PHP.
Вы можете загрузить этот файл сертификата непосредственно с: сайта CURL
После этого вам нужно найти эти записи в файле php.ini. В частности, [curl]
и [openssl]
, которые идут сразу после [curl]
.
Что вам нужно сделать, так это сохранить файл cacert.pem в месте, предпочтительно в каталоге в корневом каталоге вашего веб-сервера или в том месте, где вы предпочитаете, и использовать абсолютный каталог для конфигурации ниже.
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = "absolute location of where you saved the cacert.pem file"
[openssl]
; The location of a Certificate Authority (CA) file on the local filesystem
; to use when verifying the identity of SSL/TLS peers. Most users should
; not specify a value for this directive as PHP will attempt to use the
; OS-managed cert stores in its absence. If specified, this value may still
; be overridden on a per-stream basis via the "cafile" SSL stream context
; option.
openssl.cafile= "absolute location of where you saved the cacert.pem file"
Сохраните файл php.ini, перезапустите сервер и повторите попытку. Это должно решить вашу проблему.
ОБНОВЛЯТЬ
Если вы проверите свою информацию о PHP phpinfo()
, у вас должен быть раздел, похожий на этот:
Если вы этого не сделаете, вы, вероятно, не включаете openssl.
Если вы отметите phpinfo()
, вы получите раздел openssl?
Я добавил пример того, как должен выглядеть ваш phpinfo()
, если у вас включен openssl.
Я разобрался со своей проблемой, спасибо :) Если интересно, добавил в обновлении в вопросе.
В качестве дополнительной информации композитор обычно использует определенную версию php, которая настраивается при установке с использованием переменной среды, используемой для php.exe. Так что вы, вероятно, запускали композитор с другой версией php.
Да, но я не ставил другую версию php, кроме 7.4, в composer в первый раз. Это был новый ноутбук, и php 7.4 был моей первой и единственной установкой php, и той же, которую я использовал для установки композитора в первый раз. Затем я установил Laragon, который поставлялся с php8, и он использовал 8 по умолчанию, я переключил laragon на 7, затем композитор запутался, пока я не удалил его и не переустановил заново. Кстати, я бы проголосовал за вас, но мне нужно 15 репутации, ха-ха
Не беспокойся! Что касается композитора, да, когда вы устанавливаете новую версию php, вы должны проверить, какую версию он использует. По крайней мере, в Windows самый простой вариант — переустановить composer.
Я нашел решение. Кому еще нужно:
Это все, что я сделал выше, а затем в качестве начального шага то, что сказал другой ответ, который решает всплывающее окно «файл не найден». Но чтобы решить остальное, я понял, что моя проблема заключалась в том, что, прежде чем я сделал все вышеперечисленное в php.ini, я переключил версию php, которую использовал Ларагон (v8), на v7.4 (ту, которую я пытался получить работать.) Это почему-то смущает Composer. Поэтому мне пришлось удалить сам композитор с моего компьютера и переустановить, но активировать developer option
, проверив его в мастере установки на этот раз, так как я не сделал это в первый раз. После этого это сработало.
Так что это определенно исправило одну вещь: всплывающее окно с надписью «Файл php.ini не найден» больше не появляется, так что спасибо за это. Тем не менее, первоначальная ошибка в терминале о необходимости использования openssl все еще возникает.