


Einführung in die Methode von PHP, die die Übertragung von CURL-String-Zertifikaten unterstützt (Code)
Dieser Artikel bietet Ihnen eine Einführung (Code), wie PHP die Übertragung von CURL-String-Zertifikaten unterstützt. Ich hoffe, er wird Ihnen helfen hat geholfen.
Bei der Verbindung zur WeChat-Zahlung müssen wir Zertifikate an der Rückerstattungsstelle verwenden. Da wir eine SAAS-Plattform sind, müssen wir Zahlungen über mehrere Parteien und mehrere Kanäle unterstützen Im Anwendungsserver wird es durch SLB beeinträchtigt, was dazu führt, dass die Dateien auf einem bestimmten Computer nicht synchronisiert sind und der Rückerstattungsprozess behindert wird. Wenn die Dateien jedoch im OSS gespeichert sind, muss das Backend sie vom OSS herunterladen des Anwendungsservers, um die Konsistenz sicherzustellen. Nach langem Überlegen haben wir uns schließlich entschieden, den Zertifikatsinhalt in der Datenbank zu speichern. Unabhängig davon, wie viele Maschinen im Cluster verwendet werden, kann die Konsistenz der Datei sichergestellt und redundante Downloadschritte vermieden werden .
Problem
Aber ich bin gleich beim Starten auf ein Problem gestoßen. Das CURL-Zertifikat von PHP unterstützt die Übertragung von Zeichenfolgen nicht und kann nur den Zertifikatspfad ausfüllen (das Folgende ist die offizielle Erklärung). )
Client-Zertifikate müssen durch einen Pfadausdruck zu einem Zertifikatspeicher angegeben werden.
Lösungsprozess
Mein erster Gedanke ist, eine leere Datei zu erstellen und schreiben Sie den Inhalt des Zertifikats. Warten Sie, bis das Zertifikat verwendet wird, und löschen Sie dann die Datei. Das Erstellen und anschließende Löschen einer Entitätsdatei verbraucht jedoch Leistung und ist sehr mühsam Datei? Ja, die Funktion tmpfile()
kann uns dabei helfen, eine temporäre Datei zu erstellen und den Dateipfad abzurufen. Deshalb habe ich eine Methode geschrieben, um den temporären Dateipfad abzurufen.
<?php public function getTmpPathByContent($content) { $tmpFile = tmpfile(); fwrite($tmpFile, $content); $tempPemPath = stream_get_meta_data($tmpFile); return $tempPemPath['uri']; ///tmp/phpXZCtAO } ?>
Das Traurige daran ist, dass der von dieser Methode zurückgegebene Pfad dies tut Überhaupt nicht gelesen. Ich konnte den Inhalt nicht finden und dachte sogar, ich wäre betrogen worden. Ich habe den Grund gefunden, nachdem ich die offiziellen Dokumente gelesen hatte. Wenn die von
zurückgegebene Handle-Referenzanzahl 0 ist , die temporäre Datei wird recycelt und der temporäre Pfad wird natürlich recycelt. Nachdem die Methode ausgeführt wurde, endet der Lebenszyklus der lokalen Variablen tmpfile()
(das offizielle Dokument lautet wie folgt). 🎜>getTmpPathByContent()
$tmpFile
Die Datei wird automatisch entfernt, wenn sie geschlossen wird (z. B. durch Aufrufen von fclose() oder wenn keine weiteren Verweise auf das von tmpfile() zurückgegebene Dateihandle vorhanden sind) oder wenn das Skript endet
Bestätigt die Grundursache, dann müssen wir jetzt dringend ein Leben finden. Ein Variablentyp, dessen Zyklus endet, wenn der Prozess endet, um das Handle zu speichern. Welcher Typ kann die Bedingungen erfüllen? statische Variablen. Der Unterschied zwischen statischen Variablen und lokalen Variablen besteht darin, dass ihnen zu Beginn des PHP-Lebenszyklus Speicherplatz zugewiesen und im globalen Variablenbereich gespeichert wird. In diesem Fall werden statische Variablen von Ihnen deklariert Wenn Sie den Referenzzähler
größer als 0 halten können, kann unser Code die folgende Verarbeitung ausführen:
file_get_contents(/tmp/phpyyiOZv): failed to open stream: No such file or directory
Führen Sie ihn erneut aus und lesen Sie den Inhalt der temporären Datei erfolgreich $tmpFile
<?php public function getTmpPathByContent($content) { static $tmpFile = null; $tmpFile = tmpfile(); fwrite($tmpFile, $content); $tempPemPath = stream_get_meta_data($tmpFile); return $tempPemPath['uri']; } ?>
-----BEGIN CERTIFICATE----- MIIEbDCCA9WgAwIBAgIEAWJKHDANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMC Q04xEjAQBgNVBAgTCUd1YW5nZG9uZzERMA8GA1UEBxMIU2hlbnpoZW4xEDAOBgNV BAoTB1RlbmNlbnQxDDAKBgNVBAsTA1dYRzETMBEGA1UEAxMKTW1wYXltY2hDQTEf MB0GCSqGSIb3DQEJARYQbW1wYXltY2hAdGVuY2VudDAeFw0xNzA4MDcwOTIxNDda Fw0yNzA4MDUwOTIxNDdaMIGbMQswCQYDVQQGEwJDTjESMBAGA1UECBMJR3Vhbmdk b25nMREwDwYDVQQHEwhTaGVuemhlbjEQMA4GA1UEChMHVGVuY2VudDEOMAwGA1UE CxMFTU1QYXkxMDAuBgNVBAMUJ+a3seWcs+W4guaYjua6kOi9r+S7tuiCoeS7veac iemZkOWFrOWPuDERMA8GA1UEBBMIMTAyNTkyODEwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQDg2D3++uOxY/yMGQPBnROvyYimnCsfGE0dnqdGUTCykqBh yfv82zE1/St/4DQX2QDiIvLif+sMGcYwF4bkzdY+HgitYLI0k5o/5LCNZOMctuio kdYC2bNdWHq2y9S5UWLQR1Zvq+6QyPBVBVY9yq9xtQhIlUTsZnICAp3iQLfQUR3l aEdH9IERoRUIkbyb8oX5ONQz4P9jOeE9C5iwx0QrH4s01NFhkhr8JHlugRLpo9vA xGgi/48fOlONj6wWal5Gt0OvvEbIwgQwya15KBX2YeGnZvYBQa+lQMeXEqZSFie3 G+wGvbtlONczQEtp+JDxLZLUS/FT7U0TQN/t8JDvAgMBAAGjggFGMIIBQjAJBgNV HRMEAjAAMCwGCWCGSAGG+EIBDQQfFh0iQ0VTLUNBIEdlbmVyYXRlIENlcnRpZmlj YXRlIjAdBgNVHQ4EFgQUjDJ75bu3Roog7XOH6uFAdZ6kpcIwgb8GA1UdIwSBtzCB tIAUPgUm9iJitBVbiM1kfrDUYqflhnShgZCkgY0wgYoxCzAJBgNVBAYTAkNOMRIw EAYDVQQIEwlHdWFuZ2RvbmcxETAPBgNVBAcTCFNoZW56aGVuMRAwDgYDVQQKEwdU ZW5jZW50MQwwCgYDVQQLEwNXWEcxEzARBgNVBAMTCk1tcGF5bWNoQ0ExHzAdBgkq hkiG9w0BCQEWEG1tcGF5bWNoQHRlbmNlbnSCCQC7VJcrvADoVzAOBgNVHQ8BAf8E BAMCBsAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwDQYJKoZIhvcNAQEFBQADgYEA ucJLJkkHxlqQCEapZOWmySutqNVZxFbqyG//UXxxpA/1yG4e+KmufKZWv+c+MtYI 8i0KDDCv/UE+kkFIrHYDDKsdLRpxrYOUHGoqq0c7yBJ6Dimgy6m8U8FsEv3HtUR2 8g5xrg2Tc5MPWEp9ncEw575hGk0CXLDGOkI1nU+pGqk= -----END CERTIFICATE-----
Dieser Artikel ist hier. Weitere spannende Inhalte finden Sie im CURLOPT_SSLCERT
PHP-Video auf der PHP-Chinese-Website-Tutorial-Spalte
Das obige ist der detaillierte Inhalt vonEinführung in die Methode von PHP, die die Übertragung von CURL-String-Zertifikaten unterstützt (Code). 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.

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

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

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

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.

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.
