


So beheben Sie Probleme mit der PHP Curl HTTPS-Zertifizierungsstelle unter Windows
Eine erfolgreiche HTTPS-Anfrage erfordert die Validierung durch den HTTP-Client vom Server bereitgestelltes TLS-Zertifikat anhand einer Liste bekannter und vertrauenswürdiger Root-Zertifikate Zertifikate. Die PHP-Curl-Erweiterung ist nicht anders; die Locke Die Erweiterung verwendet libcurl, um die HTTPS-Anfrage zu stellen, und libcurl, das wiederum eine TLS-Bibliothek wie OpenSSL verwendet, um die Anfrage zu validieren.
Die Curl-Erweiterung erfordert eine gültige Datei mit alle vertrauenswürdige Stammzertifikate zur Vervollständigung der HTTPS-Validierung und PHP stellt dies als Direktive in der Datei php.ini bereit.
Unter Linux, BSD und macOS kann libcurl standardmäßig das Systemstammverzeichnis verwenden Dies ist jedoch unter Windows nicht möglich, da dies bei Windows der Fall ist wird nicht mit einer einzigen Datei geliefert, die das gesamte Systemstammverzeichnis enthält Zertifikate.
In diesem Artikel werden zwei mögliche Ansätze zum erfolgreichen Durchführen von HTTPS-Anfragen mit der Curl-Erweiterung erläutert, und was man nicht tun sollte, um HTTPS-Anfragen unsicher zu machen.
Warum es fehlschlägt
$ch = curl_init('https://php.watch'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_exec($ch); // false curl_error($ch); // SSL certificate problem: unable to get local issuer certificate
Wenn die Aufrufe von „curl_exec“ mit einer falschen Antwort fehlschlagen und „curl_error“ auf ein Problem mit dem SSL-Zertifikat hinweist: Der Fehler „Lokales Ausstellerzertifikat konnte nicht abgerufen werden“ bedeutet, dass Curl erfolgreich war Es wurde keine Datei bereitgestellt, die Stammzertifikate enthält, oder sie konnte nicht erkannt werden.
Dieser Fehler ist auf Linux-, BSD- und macOS-Systemen ungewöhnlich, aber durchaus üblich Dies ist unter Windows üblich, da es keine bestimmte Datei zum Abrufen des Stammverzeichnisses gibt Zertifikate, und PHP liefert keine Stammzertifikatsliste mit besitzen.
Die Lösung besteht darin, eine Datei mit dem aktuellen Stammverzeichnis bereitzustellen Zertifikate, oder lassen Sie Curl im Idealfall den nativen Stammspeicher analysieren, der die Das zugrunde liegende Betriebssystem bietet.
Nutzung nativer Zertifizierungsstellen
Ab Curl 7.71 ist es möglich, einen Curl festzulegen Option, um Curl aufzufordern, die nativen (System-)Stammzertifikate zu verwenden. Dies funktioniert sogar unter Windows, wo Curl Systemstammzertifikate analysiert und verwendet sie.
Wenn die Option CURLOPT_SSL_OPTIONS auf CURLSSLOPT_NATIVE_CA gesetzt ist oder eine Bitmaske, die diese Bits enthält, versucht Curl, die native zu verwenden Stammzertifikatspeicher, abhängig von den Funktionen und Versionen des zugrunde liegende TLS-Bibliothek.
Dies ist die empfohlene Lösung, wenn die Curl-Erweiterung mit Curl 7.71 oder höher und PHP 8.2 und höher erstellt wurde.
$ch = curl_init('https://php.watch'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NATIVE_CA); curl_exec($ch);
Beachten Sie, dass das obige Snippet das nicht überprüft Curl-Version und das PHP Version und geht davon aus, dass sowohl die PHP- als auch die Curl-Versionsanforderungen erfüllt sind. Der Das Folgende ist ein Beispiel, das das bedingte Hinzufügen der Curl-Option zeigt:
$ch = curl_init('https://php.watch'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if (defined('CURLSSLOPT_NATIVE_CA') && version_compare(curl_version()['version'], '7.71', '>=')) { curl_setopt($ch, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NATIVE_CA); } curl_exec($ch);
Laden Sie eine cacert.pem-Datei herunter und verwalten Sie sie
Für Anwendungen, die auf PHP-Versionen älter als 8.2 ausgeführt werden (wobei CURLSSLOPT_NATIVE_CA (Konstante ist nicht verfügbar) oder wenn die Curl-Version älter als 7.71 ist, Die empfohlene alternative Lösung besteht darin, eine Curl-kompatible Version herunterzuladen Root-Zertifikatdatei und konfigurieren Sie PHP oder die Curl-Anfrage für deren Verwendung.
Das Curl-Projekt verwaltet eine aktuelle Liste von Zertifikaten. Siehe CA-Zertifikate, die aus Mozilla extrahiert wurden.
Laden Sie die Datei cacert.pem herunter
- Verschieben Sie die Datei in ein Verzeichnis, auf das PHP und der Webserver zugreifen können. Zum Beispiel nach C:/php/cacert.pem.
Bearbeiten Sie die Datei php.ini und ändern Sie den Eintrag „curl.cainfo“ so, dass er auf den absoluten Pfad zur Datei cacert.pem verweist.
[curl] ; A default value for the CURLOPT_CAINFO option. This is required to be an ; absolute path. ;curl.cainfo = curl.cainfo = "C:/php/cacert.pem"
Nach dem Login kopierenOptional starten Sie den Webserver (z. B. Apache) neu, um die INI neu zu laden
Der Nachteil dieses Ansatzes besteht darin, dass die Datei cacert.pem regelmäßig aktualisiert werden muss. Das cacert.pem Die vom Curl-Projekt bereitgestellte Datei wird beispielsweise aus dem Stammverzeichnis extrahiert Store, der von Mozilla verwaltet wird. Im Durchschnitt erhalten Sie diese Liste und die Datei 4-5 Mal im Jahr aktualisiert. Um die Kompatibilität mit dem neuesten Root sicherzustellen Stellen Sie sicher, dass Sie in der Liste der Zertifikate die lokale Kopie dieser Datei aktualisieren regelmäßig
Wenn es nicht möglich ist, die INI-Datei zu ändern, geben Sie auch den absoluten Pfad zur Datei cacert.pem in einer Curl-Anfrage an:
$ch = curl_init('https://php.watch'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CAINFO, 'C:/php/cacert.pem'); curl_exec($ch);
Auf PHP 8.2 mit Curl 7.77 , ist es möglich, mit der Option CURLOPT_CAINFO_BLOB eine Zeichenfolge zu erstellen, die den Inhalt von cacert.pem enthält.
Das obige ist der detaillierte Inhalt vonSo beheben Sie Probleme mit der PHP Curl HTTPS-Zertifizierungsstelle unter Windows. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.

PHP und Python haben jeweils ihre eigenen Vorteile und wählen nach den Projektanforderungen. 1.PHP ist für die Webentwicklung geeignet, insbesondere für die schnelle Entwicklung und Wartung von Websites. 2. Python eignet sich für Datenwissenschaft, maschinelles Lernen und künstliche Intelligenz mit prägnanter Syntax und für Anfänger.
