Je travaille sur la configuration du traitement des cartes de crédit et je devais utiliser une solution de contournement pour CURL. Le code suivant fonctionnait bien lorsque j'utilisais le serveur de test (qui n'appelait pas d'URL SSL), mais maintenant, lorsque je le teste sur le serveur de travail avec HTTPS, il échoue avec le message d'erreur «Échec de l'ouverture du flux».
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
la source
la source
Pour autoriser le wrapper https:
php_openssl
extension doit exister et être activéeallow_url_fopen
doit être réglé suron
Dans le fichier php.ini, vous devez ajouter ces lignes s'il n'existe pas:
la source
Essayez ce qui suit.
la source
Cela vous permettra d'obtenir le contenu de l'url, qu'il s'agisse d'un HTTPS
la source
Cela est probablement dû au fait que votre serveur cible ne possède pas de certificat SSL valide.
la source
Ajoutez simplement deux lignes dans votre fichier php.ini.
extension=php_openssl.dll
allow_url_include = On
ça marche pour moi.
la source
allow_url_fopen
puisque la question concerne l'ouverture d'URL, non comprise.J'ai eu la même erreur. La mise
allow_url_include = On
en place l'aphp.ini
corrigé pour moi.la source
HTTPS est pris en charge à partir de PHP 4.3.0, si vous avez compilé le support d'OpenSSL. Assurez-vous également que le serveur cible dispose d'un certificat valide, que le pare-feu autorise les connexions sortantes et que
allow_url_fopen
dans php.ini est défini sur true.la source
Dans mon cas, le problème était dû au fait que WAMP utilisait un php.ini différent pour la CLI qu'Apache, donc vos paramètres définis via le menu WAMP ne s'appliquent pas à la CLI. Modifiez simplement le php.ini CLI et cela fonctionne.
la source
Parfois, un serveur choisit de ne pas répondre en fonction de ce qu'il voit ou ne voit pas dans les en-têtes de requête http (comme un agent utilisateur approprié). Si vous pouvez vous connecter à un navigateur, saisissez les en-têtes qu'il envoie et imitez-les dans le contexte de votre flux.
la source
J'étais coincé avec des https non fonctionnels sur IIS. Résolu avec:
file_get_contents ('https ..) ne se chargerait pas.
éditez php.ini avec:
curl.cainfo = "C: \ Program Files \ PHP \ v7.3 \ extras \ ssl \ cacert.pem" openssl.cafile = "C: \ Program Files \ PHP \ v7.3 \ extras \ ssl \ cacert.pem"
enfin!
la source
POUR VÉRIFIER SI UNE URL EST OU NON
Le code de votre question peut être réécrit comme une version de travail:
la source