Ich arbeite an der Einrichtung der Kreditkartenverarbeitung und musste eine Problemumgehung für CURL verwenden. Der folgende Code funktionierte einwandfrei, als ich den Testserver verwendete (der keine SSL-URL aufrief), aber jetzt, wenn ich ihn auf dem Arbeitsserver mit HTTPS teste, schlägt die Fehlermeldung "Stream konnte nicht geöffnet werden" fehl.
function send($packet, $url) {
$ctx = stream_context_create(
array(
'http'=>array(
'header'=>"Content-type: application/x-www-form-urlencoded",
'method'=>'POST',
'content'=>$packet
)
)
);
return file_get_contents($url, 0, $ctx);
}
php
curl
https
file-get-contents
James Simpson
quelle
quelle
So erlauben Sie den https-Wrapper:
php_openssl
Erweiterung muss vorhanden und aktiviert seinallow_url_fopen
muss auf eingestellt seinon
In der Datei php.ini sollten Sie diese Zeilen hinzufügen, falls nicht vorhanden:
quelle
Versuche Folgendes.
quelle
Auf diese Weise können Sie den Inhalt von der URL abrufen, unabhängig davon, ob es sich um ein HTTPS handelt
quelle
Dies liegt wahrscheinlich daran, dass Ihr Zielserver kein gültiges SSL-Zertifikat hat.
quelle
Fügen Sie einfach zwei Zeilen in Ihre php.ini-Datei ein.
extension=php_openssl.dll
allow_url_include = On
Es funktioniert für mich.
quelle
allow_url_fopen
da die Frage das Öffnen von URLs betrifft, nicht eingeschlossen.Ich hatte den gleichen Fehler. Einstellung
allow_url_include = On
inphp.ini
es für mich fixiert.quelle
HTTPS wird ab PHP 4.3.0 unterstützt, wenn Sie OpenSSL unterstützt haben.
allow_url_fopen
Stellen Sie außerdem sicher, dass der Zielserver über ein gültiges Zertifikat verfügt, die Firewall ausgehende Verbindungen zulässt und in php.ini auf true gesetzt ist.quelle
In meinem Fall war das Problem darauf zurückzuführen, dass WAMP eine andere php.ini für CLI als Apache verwendete, sodass Ihre über das WAMP-Menü vorgenommenen Einstellungen nicht für CLI gelten. Ändern Sie einfach die CLI php.ini und es funktioniert.
quelle
Manchmal entscheidet sich ein Server dafür, nicht zu antworten, basierend auf dem, was er in den HTTP-Anforderungsheadern sieht oder nicht (z. B. einem geeigneten Benutzeragenten). Wenn Sie eine Verbindung mit einem Browser herstellen können, greifen Sie auf die von ihm gesendeten Header zu und ahmen Sie sie in Ihrem Stream-Kontext nach.
quelle
Ich war mit nicht funktionierenden https auf IIS festgefahren. Gelöst mit:
file_get_contents ('https ..) wurde nicht geladen.
bearbeiten Sie php.ini mit:
curl.cainfo = "C: \ Programme \ PHP \ v7.3 \ extras \ ssl \ cacert.pem" openssl.cafile = "C: \ Programme \ PHP \ v7.3 \ extras \ ssl \ cacert.pem"
endlich!
quelle
PRÜFEN, ob eine URL aktiv ist oder nicht
Der Code in Ihrer Frage kann in eine Arbeitsversion umgeschrieben werden:
quelle