366 votes

Comment puis-je manipuler l’avertissement de la fonction file_get_contents() en PHP ?

J’ai écrit un code PHP comme celui-ci

Mais quand je supprime « http:// » de `` je reçois l’avertissement suivant :

Warning : file_get_contents (www.google.com) [function.file-get-contents] : impossible d’ouvrir le flux de données :

J’ai essayé et , mais il n’a pas fonctionné.

590voto

Roel Points 9657

Étape 1 : vérifier le code de retour :``

Étape 2 : supprimer l’avertissement en mettant un @ devant le file_get_contents :``

177voto

enobrev Points 10306

Vous pouvez également définir votre gestionnaire d'erreur comme une fonction anonyme qui appelle une Exception et utiliser un try / catch sur cette exception.

set_error_handler(
    create_function(
        '$severity, $message, $file, $line',
        'throw new ErrorException($message, $severity, $severity, $file, $line);'
    )
);

try {
    file_get_contents('www.google.com');
}
catch (Exception $e) {
    echo $e->getMessage();
}

restore_error_handler();

Semble comme beaucoup de code pour prendre un peu d'erreur, mais si vous êtes en utilisant les exceptions dans votre application, vous n'aurez qu'à le faire une seule fois, de façon à le haut (dans un fichier de configuration, par exemple), et il vous permet de convertir toutes vos erreurs des Exceptions partout.

114voto

Laurie Points 81

Ma façon préférée de faire cela est assez simple :

J’ai trouvé ceci, après avoir expérimenté avec le de @enobrev ci-dessus, mais cela permet de moins longue (et de l’OMI, plus lisible) code. Nous utilisons simplement pour obtenir le texte de la dernière erreur, et `` retourne false si une erreur survient, pour un simple « si » peut attraper qui.

42voto

Greg Points 132247

Vous pouvez ajouter un @:``

Cela va supprimer aucun avertissement - utiliser avec parcimonie !. Voir opérateurs de contrôle d’erreur

Edit : Lorsque vous supprimez le « http:// » vous cherchez n’est plus d’une page web, mais un fichier sur votre disque appelé « www.google... »

26voto

Aram Kocharyan Points 8530

Une alternative consiste à supprimer l’erreur et aussi lever une exception qui par la suite, vous pouvez prendre. Ceci est particulièrement utile si il y a plusieurs appels à file_get_contents() dans votre code, car vous n’avez pas besoin de supprimer et gérer l’ensemble d'entre eux manuellement. Au lieu de cela, on peuvent faire plusieurs appels à cette fonction dans un bloc try/catch unique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X