Gestion d'erreur file_get_contents()

Gestion d'erreur file_get_contents() - PHP - Programmation

Marsh Posté le 20-01-2006 à 10:50:17    

Bonjour,
 
J'utilise un petite fonction que j'ai faites pour vérifier le contenu d'une page distante. J'utilise pour cela la fonction file_get_contents().
 
Actuellement, si l'url n'est pas trouvée, j'ai une erreur qui s'"affiche du type :
-Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /u**2/web/*****e/*****/*****/scripts/fonctions.php on line 11
 
J'aimerais ne pas voir afficher cette erreur, mais que la valeur retournée soit tout simplement ce que je veux (0, ou false etc...).
 
Voici ma fonction :  

Code :
  1. function mafonction($url){
  2. $contenu = file_get_contents($url);
  3. if(strpos($contenu , 'texte a trouver')){
  4.  $is_txt = 1;
  5. }
  6. else{
  7.    $is_txt = 0;
  8. }
  9. return $is_txt;
  10. }


 
J'ai essayé de mettre un if($contenu = file_get_contents($url)===false) etc... mais l'erreur s'affiche quand meme et du coup, le script s'arrete, alors qu'il y a d'autre urls a tester
 
Merci d'avance.
 
Merci.

Reply

Marsh Posté le 20-01-2006 à 10:50:17   

Reply

Marsh Posté le 20-01-2006 à 11:06:15    

@file_get_contents ?


---------------
♈ ♋ ♌ ♍ ♎ ♏ - Agora Fidelio | Galerie d'art Toulousaine
Reply

Marsh Posté le 20-01-2006 à 11:09:29    

Oui, mais qu'en est il de ce que je voudrais retourner? La il n'affiche pas l'erreur, mais je n'ai ni false ni quoi que ce soit...

Reply

Marsh Posté le 20-01-2006 à 11:09:35    

file_exists() ( http://www.nexen.net/docs/php/anno [...] file_exist ) sert à vérifier l'existance d'un fichier avant de le manipuler.
 
L' @ est à éviter absolument sauf dans un seul cas : si on a un systéme de traitement d'erreur et que l'erreur en question n'est pas inévitable par une autre opération ou vérification.

Reply

Marsh Posté le 20-01-2006 à 11:11:04    

Excellente idée omega2 ;)  
 
Merci

Reply

Marsh Posté le 20-01-2006 à 11:20:48    

Il n'est pas noté dans les doc que file_exists() peut etre utilisé à distance, et sur des urls, non pas sur des fichiers.
 

Reply

Marsh Posté le 20-01-2006 à 11:36:51    

Citation :

Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Liste des protocoles supportés pour une liste des protocoles supportant la famille de fonctionnalités de stat.


Mais c'est vrai que tous les hébergeurs ne sont pas encore passé à php5.
 
Et je viens de réaliser un truc, le warning n'indique pas que le fichier ou le serveur n'a pas été trouvé. L'erreur est autre, peut être un protocole réseau non disponible ou peut être que ton hébergeur ne permet pas l'accés aux fichiers distants.
 
Au fait, ton erreur est un "warning" et non pas un "error". Un warning n'est pas bloquant et ton script continu donc son exécution malgrés le probléme constaté par php.

Reply

Marsh Posté le 20-01-2006 à 12:44:41    

Et est-il possible de detecter ces warning, pour générer un rapport d'erreur par exemple?

Reply

Marsh Posté le 20-01-2006 à 12:55:38    

de la lecture pour toi :
http://www.nexen.net/docs/php/anno [...] orfunc.php
 
// pour avoir le message d'erreur sans l'afficher :
http://www.nexen.net/docs/php/anno [...] ack_errors
http://www.nexen.net/docs/php/anno [...] ien=erreur
 
// l'affichage des erreurs et les problémes de sécurité
http://www.nexen.net/docs/php/anno [...] ien=erreur
// le tracage des erreurs grace à un débugger php
http://www.nexen.net/docs/php/annotee/debugger.php (pour quand tu développe chez toi)

Reply

Marsh Posté le 20-01-2006 à 14:42:52    

J'ai bien vu ca, mais on parlait de Warning, et non d'erreur non?
J'ai essayé quelque trucs qui ne marchent pas du fait que mon script ne génère que des warnings.

Reply

Marsh Posté le 20-01-2006 à 14:42:52   

Reply

Marsh Posté le 20-01-2006 à 15:38:08    

C'est vrai, tout ne marche pas avec les "warning".
Par contre j'ai testé http://www.nexen.net/docs/php/anno [...] andler.php et avec le php que j'ai ici (un php5.1) ca fonctionne : la fonction est bien appellé même pour les warning ou des notice.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed