Erreur file_get_contents

Eléphant du PHP | 190 Messages

22 avr. 2012, 13:54

Bonjour, je crèe en local une petite application qui utilise l'api tumblr (http://www.tumblr.com/docs/en/api/v1)

j'ai une petite fonction très simple qui vérifie l'existence d'un blog.

Code : Tout sélectionner

function validate_tumblr($tumblr){ $check = file_get_contents('http://'.$tumblr.'.tumblr.com/api/read/json?num=1'); return $check; }
que j'apelle de cette facon:

Code : Tout sélectionner

if(!validate_tumblr($_POST['tumblr'])){ $message[]='Your tumblr blog doesn\'t exist.'; }else{ $tumblr=$_POST['tumblr']; }
d'après la doc, la fonction file_get_contents retorune le contenu de la page si elle existe et false si une erreur survient. Tout fonctionne a merveille, les valeurs sont bien renvoyée mais en cas de false l'erreur s'affiche et c'est très génant.
Warning: file_get_contents(http://hjhgjghjghjhjgjjjjjjggg.tumblr.c ... json?num=1) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\wamp\www\functions.php on line 15
Une idée pour éviter cela ?

Merci.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 avr. 2012, 15:25

Salut,

file_exists ?

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 267 Messages

22 avr. 2012, 15:47

salut,

même si c'est pas trop conseillé, mettre un @ devant la fonction file_get_contents, ce qui donne :
function validate_tumblr($tumblr){
   $check = @file_get_contents('http://'.$tumblr.'.tumblr.com/api/read/json?num=1');
   return $check;
}
sinon tester avec file_exists comme l'a indiqué moogli

@+
dix2

Eléphant du PHP | 190 Messages

22 avr. 2012, 16:15

Merci pour vos réponses.

file_exists ne fonctionne pas, j'avais déjà essayé ainsi que is_readable. Ca me dit toujours que le fichier n'existe pas.
function validate_tumblr($tumblr){
   if(file_exists('http://'.$tumblr.'.tumblr.com/api/read/json?num=1')){
      return true;
   }else{
      return false;
   }
}
Le @ devant la fonction fonctionne très bien mais je ne trouve rien à ce sujet, peux tu me dire ce que cela fait exactement ?

Merci

edit: Ok j'ai trouvé, ça empêche simplement le message d'erreur de s'afficher. Dans mon cas, vu que cette fonction ne sert qu'a tester l'existence du fichier ça me semble une bonne solution, mais je comprend que cela soit généralement déconseillé.

Sinon une idée du pourquoi file_exists ne fonctionne pas ? je ne pense pas avoir une erreur dans le code

ViPHP
xTG
ViPHP | 7331 Messages

22 avr. 2012, 18:58

Tu parles d'erreur 404, donc elle fonctionne très bien la fonction non ?
file_exists() renvoie aussi un warning en plus de renvoyer false en cas de fichier non trouvé.

Eléphant du PHP | 190 Messages

22 avr. 2012, 21:09

Non non, ce que je voulais dire, c'est que la fonction renvoie toujours false même la ou file_get_contents renvoyait true.

Le coup du @ fonctionne très bien, même si c'est pas recommandé, je pense que dans ce contexte ce n'est pas trop grave, je ne suis pas du genre à en placer partout pour éviter les erreurs. J'utilise le $check uniquement pour vérifier la présence d'une page.