Xavier Boubert Ingénieur développeur et ses projets en tous genres

[Astuce] Empecher une fonction PHP de planter le script

Astuce très simple mais pourtant tellement importante ! Vous avez une fonction qui, une fois sur deux bloque votre script ? Procédez comme suit :

Ajoutez simplement un arobase « @ » devant votre fonction. PHP utilisera la fonction mais si jamais il y a une erreur, ne la retournera pas et fera comme si de rien était.

Par exemple si je veux supprimer un fichier j’utiliserais « unlink » :

unlink(‘monfichier.txt’) ;

Problème, si « monfichier.txt » n’existe pas, PHP me retournera une erreur. Je rajoute donc le @ devant et le tour est joué :

@unlink(‘monfichier.txt’) ;

Et vous, vous le saviez ?

Comments

  1. Alexandre C. :
    Le 16 août 2009

    merci pour l’astuce, mais c’est valable pour quelle version de PHP ?

  2. Le 16 août 2009

    Toutes il me semble, ou au moins depuis la 3

  3. Le 21 août 2009

    C’est tout de même sacrément sale comme méthode… il vaut mieux gérer l’erreur via les exceptions.
    Le @ est à bannir des codes…

  4. Le 21 août 2009

    Pourquoi sale ?

  5. Le 21 août 2009

    Parce que tu caches seulement l’erreur, tu ne la traites pas. Un script bien pensé ne devrais pas avoir besoin de cela, un test sur l’existence du fichier dans ton exemple résoudrait le problème ;)
    (et si tu ne veux pas afficher l’erreur, un petit log pour te le signaler à toi et voilà)

  6. Le 21 août 2009

    Pour mon exemple c’est sur. Mais par exemple avec fopen sur un fichier distant, même en test avec if(fopen()) il te retourne l’erreur si tu ne peux pas accéder au fichier. Donc un petit @ est obligatoire.

  7. Le 21 août 2009

    En effet, avec fopen je suis ok, mais il ne faut pas le faire avec toute les fonctions, uniquement dans très peu de cas. Quand c’est écrit dans le manuel c’est normal par exemple (pour fopen())

  8. Le 21 août 2009

    Et c’est pour ça que c’est une astuce et pas une recommandation ^^