2016-09-22 3 views
1

J'utilise une version compilée de SimplePie 1.4.2 (la dernière version balisée sur GitHub) pour agréger certains flux rss/atom (code ci-dessous si nécessaire).SimplePie sur Azure ne pas analyser les flux https

Cela fonctionne bien sur un couple d'hébergeurs Linux, mais quand je le télécharge en Azure app services seuls les flux http s'affichent correctement, mais pas https.

Pourquoi cela se produit-il? Aucun paramètre spécifique défini sur l'application Web, en utilisant PHP 5.6 dans les deux environnements. Aucune différence d'accès à l'application Web Azur via http ou https.

Merci à tous!


<?php 
date_default_timezone_set('Europe/Rome'); 
set_time_limit(0); 
header('Content-Type: application/rss+xml; charset=UTF-8'); 
require_once('SimplePie.compiled.php'); 

[...] 

echo '<?xml version="1.0" encoding="UTF-8"?>'; 
?> 
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/"> 
<channel> 
<title><?php echo $feedtitle; ?></title> 
<atom:link href="<?php echo $feedlink; ?>" rel="self" type="application/rss+xml" /> 
<link><?php echo $feedhome; ?></link> 
<description><?php echo $feeddesc; ?></description> 
<?php 
$feed = new SimplePie(); 
$feed->set_feed_url($feeds); 
$feed->force_feed(true); 
$feed->init(); 
$feed->handle_content_type(); 
foreach($feed->get_items() as $item) { 
    ?> 
    <item> 
     <title><?php echo $item->get_title(); ?></title> 
     <link><?php echo $item->get_permalink(); ?></link> 
     <guid><?php echo $item->get_permalink(); ?></guid> 
     <pubDate><?php echo $item->get_date('D, d M Y H:i:s T'); ?></pubDate> 
     <dc:creator><?php if ($author = $item->get_author()) { echo $author->get_name()." at "; }; ?><?php if ($feed_title = $item->get_feed()->get_title()) {echo $feed_title;}?></dc:creator> 
     <description><![CDATA[<?php echo $item->get_content(); ?>]]></description> 
    </item> 
    <? 
}; 
?> 
</channel> 
</rss> 

Répondre

1

Il dosen't travail pour 'https des urls parce que le SimplePie tire parti cURL pour faire des requêtes http et pour https demandes, le cURL exige de vérifier le certificat d'hôte ou par les pairs.

Vous pouvez essayer l'extrait de code suivant pour contourner la vérification.

$simplePie = new SimplePie(); 
$simplePie->set_curl_options(
    array(
     CURLOPT_SSL_VERIFYHOST => false, 
     CURLOPT_SSL_VERIFYPEER => false 
    ) 
); 

Voici le scénario similaire à https://github.com/simplepie/simplepie/pull/407