Comment résoudre l'erreur PHP Failed to enable crypto ?
Réponses rédigées par Antoine
Dernière mise à jour : 2022-01-10 00:26:58
Question
Bonjour, j'essaie de récupérer un flux RSS avec la fonction PHP simplexml_load_file
, mais j'obtiens toujours les erreurs SSL operation failed et Failed to enable crypto. Savez vous comment solutionner ce problème ?
<?php
$rss = simplexml_load_file('https://www.exemple.com/feed/');
$article = 0;
foreach($rss->channel->item as $val) {
echo "<a href='" . $val->link . "'>" . $val->title . "</a><br>";
echo date("d m Y", strtotime($val->pubDate)) . "<br>";
$article++;
if ($article==7) {
break;
}
}
?>
Réponse
Le problème vient du fait que le l'extension OpenSSL et son certificat se sont pas déclarés dans le fichier PHP.ini de votre serveur.
L'alternative consiste à créer un contexte de flux SSL pour la fonction simplexml_load_file
; il en va d'ailleurs de même avec toutes autres fonctions, tel que file_get_contents
par exemple.
Il vous suffit d'utiliser les options de contexte verify_peer
et verify_peer_name
.
<?php
$context = stream_context_create(array("ssl"=>array(
"verify_peer" => false,
"verify_peer_name"=>false
)));
libxml_set_streams_context($context);
$rss = simplexml_load_file("https://www.exemple.com/feed/");
$article = 0;
foreach($rss->channel->item as $val){
echo "<a href='" . $val->link . "'>" . $val->title . "</a><br>";
echo date("d m Y", strtotime($val->pubDate)) . "<br>";
$article++;
if ($article==7) {
break;
}
}
?>