Accueil » Articles » Comment utiliser cURL pour lire un fichier externe

Comment utiliser cURL pour lire un fichier externe

Si comme moi vous êtes héberger sur un serveur partagé (hosted solution), il peut arriver que certaines configurations de PHP vous cause problème. C'est ce qui m'est arrivé.

Pour des raisons de sécurité, mon hébergeur a desactiver les deux directives suivantes :

  • allow_url_fopen
  • alow_url_include

Comme c'est deux directives sont PHP_INI_SYSTEM, je ne pouvais ni utiliser ini_set() ni utiliser un fichier .htaccess pour les modifier. Pourtant, j'avais besoin de ces fonctionnalités pour ajouter un feed RSS dans une page. Comment faire pour ouvrir un fichier .xml d'un autre site dans ce cas là?

cURL à la rescousse

Si votre hébergeur met à votre disposition le module cURL1, vous pouvez y arriver facilement.

function GetRemoteFileContent($url)
{
  $ch = curl_init();  // Initialiser cURL.
  curl_setopt($ch, CURLOPT_URL, $url);  // Indiquer quel URL récupérer
  curl_setopt($ch, CURLOPT_HEADER, 0);  // Ne pas inclure l'header dans la réponse.

  ob_start();  // Commencer à 'cache' l'output.

  curl_exec($ch);  // Exécuter la requète.
  curl_close($ch);  // Fermer cURL.

  $cache = ob_get_contents();  // Sauvegarder la 'cache' dans la variable $cache.
  ob_end_clean();  // Vider le buffer.

  return $cache;  
}

Au lieu d'utiliser ob_start(), j'aurais pus aussi utiliser curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);, mais ça me permet de montrer ob_start() à l'oeuvre :-)

1 Pour savoir si votre fournisseur vous permet d'utiliser le module cURL, inspecter votre phpinfo()

cURL support enabled
Cet article vous a plu? Lisez mes autres articles pour découvrir d'autres trucs.

Sébastien Brodeur

Il est strictement interdit de reproduire ce texte sans la permission écrite de l'auteur.


Les gens qui ont consulter cet article, ont aussi consultez ceux-ci :


Valid XHTML 1.0 Transitional

Valid CSS!