OVH Community, votre nouvel espace communautaire.

file_get_contents fonctionne en local mais pas sur mon serveur OVH


Jikoo
06/01/2016, 21h04
Citation Envoyé par Abazada
Bonjour. Pas vraiment d'accord.
Ok Grand Abazada, je m'incline! ^^
Tu as tout à fait raison.
Cependant, je trouve qu'il est plus facile de gérer les cookies, les redirections et les certificats SSL/TLS en cURL.
Question d'habitude sans doute. J'utilise file_get_contents() qu'en interne.

Abazada
06/01/2016, 08h53
Citation Envoyé par Jikoo
De toute façon file_get_contents() n'est à la base pas prévu pour ça.
Il vaut mieux utiliser cURL (qui est nativement activé sur votre hébergement)
car il permet, entre autres, de se faire passer pour un utilisateur "normal".
Il faut dans ce cas ajouter un bon header (language, user-agent...)
Bonjour. Pas vraiment d'accord.

"file_get_contents" c'est le "wget" de Php. Il permet de faire tout ce que tu viens d'indiquer,
et il a l'avantage d'être inclus au langage contrairement à "curl" qui n'est pas installé sur tous les serveurs.

"file_get_contents" utilise en 3ème paramètre un $context qui permet de définir les headers, le user-agent, les cookies, les POST, etc.
cf. doc Php: http://php.net/file_get_contents#example-2608

Gaston_Phone
05/01/2016, 22h31
CURL

J'utilise CURL sur un hébergement PERSO et cela fonctionne très bien :

Code PHP:
$url "http://www.xxx.com";
$ch_rech curl_init();                    // Initialiser CURL.
curl_setopt($ch_rechCURLOPT_URL$url);  // Indiquer quel URL à récupérer
curl_setopt($ch_rechCURLOPT_HEADER0);  // Ne pas inclure l'header dans la réponse.
ob_start();                                // Commencer à 'cache' l'output.
curl_exec($ch_rech);                       // Exécuter la requète.
curl_close($ch_rech);                      // Fermer CURL.
$Results ob_get_contents();              // Sauvegarder 'cache' dans variable $Results.
ob_end_clean();                            // Vider le buffer. 

Jikoo
05/01/2016, 21h07
Effectivement, ça marche en local mais pas en ligne. J'ai testé.
Je pense que Facebook refuse de transférer des données car le header envoyé par file_get_contents() n'est pas conforme. C'est juste ma suggestion ! De toute façon file_get_contents() n'est à la base pas prévu pour ça.

Il vaut mieux utiliser cURL (qui est nativement activé sur votre hébergement) car il permet, entre autres, de se faire passer pour un utilisateur "normal". Il faut dans ce cas ajouter un bon header (language, user-agent...)
http://php.net/manual/fr/curl.examples-basic.php
http://www.php.net/manual/fr/function.curl-setopt.php

TH4W
15/12/2015, 13h26
Bonjour à tous,
Je viens vers vous car je souhaite récupérer le nombre de partages de mon site internet, que je souhaiterais afficher simplement dans un echo grâce à la fonction file_get_contents. J'ai donc écrit ce code :

Code PHP:
function getlikes($url) {
 
  
$json_string file_get_contents('http://graph.facebook.com/?ids=' $url);
  
$json json_decode($json_stringtrue);
  return 
intval$json[$url]['shares'] );
}

$url 'http://www.titanproductions.fr';
$nbr getlikes($url);

echo 
$nbr;


?>
Ce code fonctionne parfaitement en local. Seulement, après upload sur mon serveur mutualisé OVH (offre gold) le chiffre affiché est toujours "0", malgré l'activation de "file_get_contents" sur mon serveur. Comment expliquer ça ? Y'a t-il un autre moyen pour afficher cette valeur ?

Un grand merci par avance pour votre aide !