Die openssl-Erweiterung ist für den SSL / TLS-Schutz erforderlich

73
composer create-project flarum/flarum . --stability=beta

Ich versuche, diesen Befehl auszuführen, aber es gab mir diesen Fehler.

  [RuntimeException]                                                           
  The openssl extension is required for SSL/TLS protection but is not availab  
  le. 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.  

Ich habe versucht, "extension = php_openssl.dll" zu "php.ini" hinzuzufügen, aber es wurde immer noch dieser Fehler angezeigt

Mike Yang
quelle
1
Ich versuche, "extension = php_openssl.dll" zu "php.ini" hinzuzufügen, aber es wurde immer noch dieser Fehler angezeigt
Mike Yang
Ist dein PHP manuell oder aus dem Paket installiert?
Apex39

Antworten:

147

Der gleiche Fehler ist mir eingefallen. Ich habe es behoben, indem ich TLS für Composer deaktiviert habe. Es ist nicht sicher, aber ich habe das Risiko auf meinem Entwicklungscomputer übernommen .

Versuche dies:

composer config -g -- disable-tls true

und führen Sie Ihren Composer erneut aus. Es funktioniert bei mir!

Es ist jedoch unsicher und wird für Ihren Server nicht empfohlen . Die offizielle Website sagt:

Wenn true festgelegt ist, werden stattdessen alle HTTPS-URLs mit HTTP versucht, und es wird keine Verschlüsselung auf Netzwerkebene durchgeführt. Das Aktivieren ist ein Sicherheitsrisiko und wird NICHT empfohlen. Der bessere Weg ist, die Erweiterung php_openssl in php.ini zu aktivieren.

Wenn Sie keine unsichere Schicht auf Ihrem Computer / Server aktivieren möchten, richten Sie Ihre PHP so ein, dass openssl aktiviert wird, und es funktioniert auch . Stellen Sie sicher, dass die PHP Openssl-Erweiterung installiert wurde, und aktivieren Sie sie in der Datei php.ini.


Um OpenSSL zu aktivieren, fügen Sie diese Zeile in Ihrer php.ini-Datei hinzu oder suchen Sie sie und kommentieren Sie sie aus:

Linux / OSx:

extension=php_openssl.so

Windows:

extension=php_openssl.dll

Und laden Sie Ihren PHP-Fpm / Webserver bei Bedarf neu!

Vinícius Medeiros
quelle
18
Sie reparieren es nicht. Sie verstecken nur den Fehler. Sie müssen das Modul open_ssl in der php.ini-Datei Ihres Wamp-Servers aktivieren. Wamp verwendet 2 php.ini-Dateien. Eine für Apache und die andere für CLI. Sie müssen die Erweiterung open_ssl in der zweiten Datei php.ini aktivieren, die Sie unter C: \ wamp \ bin \ php \ <phpversion> \ php.ini
Narendran Parivallal am
2
Ja, ich weiß, aber aus bestimmten Gründen lässt mein Unternehmen die Aktivierung von tls nicht zu, und der Benutzer @thermos hat kommentiert, dass das open_ssl-Modul aktiviert ist und nicht funktioniert. Dann gebe ich meine Lösung für diese Frage.
Vinícius Medeiros
1
Ist dies auch wirklich unsicher, wenn Sie es auf einem lokalen Entwicklungscomputer ausführen? Wie wirkt sich das auf die Sicherheit Ihres Servers aus?
Hassan
2
Perfekt! Genie
Bjesua
1
Ich verstehe das nicht. Wenn ich dies auf meinem Entwicklungscomputer mache, wird das nicht auch auf dem Server gespiegelt? Wenn nicht, wie kann es auf dem Server funktionieren?
Brainmaniac
20

nach dem Komponisten Referenz gibt es zwei relevante Optionen: disable-tlsund secure-http.

nano ~/.composer/config.json (Wenn die Datei nicht existiert oder leer ist, erstellen Sie sie einfach mit dem folgenden Inhalt.)

{
    "config": {
        "disable-tls": true,
        "secure-http": false
    }
}

dann beschwert es sich viel:

You are running Composer with SSL/TLS protection disabled.
Warning: Accessing getcomposer.org over http which is an insecure protocol.

aber es führt die composer selfupdate(oder was auch immer).

während man unter Linux nicht einfach "SSL in der php.ini aktivieren" kann; PHP muss mit openSSL kompiliert werden, das als sharedBibliothek konfiguriert ist, um über die PHP-CLI SAPI darauf zugreifen zu können .

Martin Zeitler
quelle
Musste diesen Ansatz verwenden, weil ich extension_dir = "ext" in php.ini nicht setzen konnte (Laragon schrieb immer wieder neu), openssl bereits in php.ini aktiviert war und ich aus irgendeinem Grund "disable-tls" nicht über die Kommandozeile setzen konnte . Vielen Dank!
Lys777
16

Ich hatte genau das gleiche Problem und konnte keine Lösung finden. Nachdem ich eine Weile nachgedacht und gesucht hatte, stellte ich fest, dass mein PHP.INI anscheinend nicht im richtigen Verzeichnis für meine PHP-Erweiterungen suchte, also ging ich unter:

"Verzeichnis, in dem sich die ladbaren Erweiterungen (Module) befinden." Und fand folgendes:

; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
;extension_dir = "ext"

Und einfach das entfernt; Beachten Sie vor "extension_dir =" ext ", dass dies nur für Windows gilt. Entfernen Sie das Semikolon vor dem ersten extension_dir, wenn Sie ein anderes Betriebssystem ausführen.

Ich habe keine Ahnung, warum meine nicht bereits unmarkiert war, aber es ist nur etwas zu suchen, wenn Sie Probleme haben.

NiceDevelopmentq
quelle
3
Dies funktionierte für mich - zusammen mit der Lösung, die Zeile extension = php_openssl.dll in php.ini zu kommentieren / hinzuzufügen
Jay-Nicolas Hackleman
14

Um openssl zu aktivieren, gehen Sie in die php.ini und aktivieren Sie diese Zeile:

extension=php_openssl.dll

Wenn Sie openssl nicht aktivieren möchten, können Sie festlegen, dass Composer openssl nicht mit diesem Befehl verwendet:

composer config -g -- disable-tls true

Dies ist jedoch ein Sicherheitsproblem.

Clairton Luz
quelle
1
Um den Composer so zu konfigurieren, dass er einer Zertifizierungsstelle unter Ubuntu vertraut /usr/local/share/ca-certificates/, in die Sie Zertifikate einfügen , geben Sie unter Windows auf und suchen einen anderen Job.
Lauri Elias
Eigentlich hat mir das geholfen plus superuser.com/questions/1010080/…
Mahdi Khalili
10

Dieses Problem tritt aufgrund von openssl und des Erweiterungsdirektors auf. Kommentieren Sie daher die Erweiterungen in der php.iniDatei aus

extension=php_openssl.dll

extension_dir = "ext"

Es funktioniert auf meiner Maschine.

Vrushal Raut
quelle
1

Ich hatte das gleiche Problem. Ich habe alles versucht, was auf dieser Seite aufgeführt ist. Als ich Composer neu installiert habe, hat es wie zuvor funktioniert. Ich hatte eine PHP-Versionsinkongruenz, die durch eine Neuinstallation behoben wurde, bei der die Abhängigkeiten mit dem in meinen Systemumgebungsvariablen installierten PHP-Pfad hergestellt wurden.

Ich empfehle den composer config -g -- disable-tls trueAnsatz nicht.

Der Weg, dies umzukehren, ist übrigens composer config -g -- disable-tls false.

Michael Neely
quelle
1

Ich füge dies einfach hinzu, weil es für mich funktioniert hat. Ich installiere Composer mit aktivierter Entwickleroption (aktivieren Sie einfach das Kontrollkästchen im Installationsprogramm).

https://getcomposer.org/Composer-Setup.exe

Ich denke, dieses Problem kann auftreten, wenn Sie Ihrem Wamp-Server eine neue Version von PHP hinzufügen. Wenn Sie dies tun, müssen Sie überprüfen, ob die Variable extension_dir auf "env" konfiguriert ist.

Überprüfen Sie dann, ob die Datei php_openssl.dll in Ihrem Ordner phpx.x / ext vorhanden ist . Wenn es keine php_openssl.dll gibt, müssen Sie sie hier herunterladen: http://www.telecharger-dll.fr/dll-php_openssl.dll.html

Wenn es immer noch nicht funktioniert, überprüfen Sie, ob Ihr Apache-Server die gute Datei php.ini verwendet, indem Sie den folgenden Befehl cmd ausführen:

php --ini

Configuration File (php.ini) Path: C:\Windows
Loaded Configuration File:         C:\wamp64\bin\php\php7.4.7x64\php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

Wenn die geladene Konfigurationsdatei zurückgegeben wird (keine) , müssen Sie überprüfen, ob Ihre Datei appache / apache2.4.41 / conf / httpd.conf mit dem richtigen phpIniDir und dem richtigen Modul konfiguriert ist.

Es muss ungefähr so ​​sein:

PHPIniDir "${APACHE_DIR}/bin"
LoadModule php7_module "${INSTALL_DIR}/bin/php/php7.4.7x64/php7apache2_4.dll"

Starten Sie dann Apache neu und überprüfen Sie die "apache / apache2.4.41 / bin / php.ini" (die oben von PHPIniDir konfiguriert wurde), die mir gefallen muss

Geben Sie hier die Bildbeschreibung ein

Vincent PHILIPPE
quelle
1

Nachdem ich alles ausprobiert hatte, gelang es mir endlich, dies zu regeln. Keine der oben genannten Lösungsvorschläge hat bei mir funktioniert. Mein System ist ein PC Windows 10. Um dies zu sortieren, musste ich die config.jsonhier befindliche Datei ändern C:\Users\[Your User]\AppData\Roaming\Composer\. Dort finden Sie:

{
    "config": {
        "disable-tls": true},
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "http://repo.packagist.org" // this needs to change to 'https'
        }
    }
}

Hier müssen Sie die Repo-URL des Packagisten aktualisieren, um auf die URL-Version "https" zu verweisen.

Ich bin mir bewusst, dass die oben ausgewählte Lösung in 95% der Fälle funktioniert, aber wie gesagt, das hat bei mir nicht funktioniert. Hoffe das hilft jemandem.

Viel Spaß beim Codieren!

Vasile Florin Vilsan
quelle
0

Für mich unter Windows 10 funktionierte nichts davon ... Ich hatte meinen lokalen Server von WAMP auf Laragon geändert und musste den neuen Pfad zur php.ini in den Umgebungsvariablen unter hinzufügen:

Systemsteuerung -> Erweiterte Systemeinstellungen -> Umgebungsvariablen -> Pfad (Doppelklick) -> Durchsuchen ... Navigieren Sie dann zur php.ini und klicken Sie auf OK.

Danach war ein Neustart erforderlich und jetzt funktioniert der Komponist wie ein Zauber!

Qriz75
quelle
0

Geben Sie hier die Bildbeschreibung ein Sie führen Composer mit deaktiviertem SSL / TLS-Schutz aus.

 composer config --global disable-tls true
 composer config --global disable-tls false
blal yassine
quelle