IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Système] Erreur perso


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut [Système] Erreur perso
    Salut,

    J'ai une fonction qui n'est pas disponible à tous: ftp_ssl_connect(). Si cette fonction n'existe pas chez l'utilisateur, une erreur apparait et arrête le script.
    Je voudrai que si elle n'existe pas, afficher un erreur perso. Alors j'ai fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    error_reporting(0);
    define("FTP_CONNECTSSL_FAILED", "Erreur SSL");
    if (!$this->openftp = ftp_ssl_connect($this->ftp_server)) {
       trigger_error(FTP_CONNECTSSL_FAILED);
       return false;
    }
    Mais rien ne s'affiche et le script s'arrête
    Comment faire?
    Merci

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    error_reporting(E_USER_ERROR);
    define("FTP_CONNECTSSL_FAILED", "Erreur SSL");
    if (!$this->openftp = ftp_ssl_connect($this->ftp_server)) {
       trigger_error("Mon erreur perso a moi",E_USER_ERROR);
       return false;
    }
    mais je te conseil plutot d'utiliser :set_error_handler avec ça.

    Si tu es sur du php 5, utilises plutot les exceptions

  3. #3
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Je suis en train de regarder mais une question: Fatal error correspond a quelle type d'erreur? E_WARNING? E_ERROR?
    => http://fr2.php.net/manual/fr/ref.errorfunc.php#ini.error-reporting

  4. #4
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Ah j'ai trouvé.
    Mais bon je n'y arrive pas.
    Voila ce que j'ai fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    set_error_handler("errormanager");
    function errormanager($errno, $errstr) {
       switch ($errno) {
          case E_USER_ERROR:
              echo "<b>Erreur fatale</b>: $errstr<br />\n";
              break;
          default:
              break;
       }
    }
     
    if (!$this->openftp = ftp_ssl_connect($this->ftp_server)) {
       trigger_error(FTP_CONNECTSSL_FAILED, E_USER_ERROR);
       return false;
    }
    Qu'est ce que je dois changer?
    Merci

  5. #5
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    trigger_error prend une chaine en premier argument

  6. #6
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Ah... il fait la différence entre constante et chaine?

    Merci je vais voir.

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Pourquoi ne pas tester si OpenSSL est installée ? http://php.net/extension_loaded

  8. #8
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Oh c'est encore mieux je ne savais si c'était possible !
    Merci je vais voir

  9. #9
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Oula alors j'ai regardé le manuel concernant OpenSSL mais je ne connais pas le nom de l'extension (comme GD par exemple).
    Je ne l'ai pas sous EasyPhp alors je l'ai téléchargé sur le site officiel mais j'y comprends encore moins...

    Quelle est cette extension?

  10. #10
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    le meilleure moyen de savoir c'est de regarder dans ton phpinfo le nom affiché pour cette extension quand tu as ta fonction de disponible...

    Tu as essayé openssl + variations de casse ?

  11. #11
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Je n'ai rien dans mon phpinfo concernant OpenSSL.
    Désolé mais je n'ai aucune idée de ce que veut dire "openssl + variations de casse"

  12. #12
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    la fonction extension_loaded est sensible à la casse. C'est à dire que si l'extension est chargée avec le petit nom "OpenSSL" et que tu testes "openssl", ca ne passera pas. Donc il faut tester un peu toutes les combinaisons
    OpenSsl
    openSSL
    OpenSSL
    openssl
    ...

    Mais bien sur il faut faire ce test sur un système ou tu sais d'avance que l'extension est chargée. Le meilleur moyen de faire ca sur ton serveur de dev, c'est de charger ou décharger (suivant ce que tu veux tester) cette extension quand tu testes...

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Plus simple encore : function_exists


    Julp.

  14. #14
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Le problème c'est que mon extension n'est pas installée sur Easyphp et je ne vois pas comment l'installer Elle n'est pas dans le liste d'extensions à activer ou non.

  15. #15
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    salut,
    Au sujet de set_error_handler
    Citation Envoyé par La documentation php
    Les types d'erreur suivants ne peuvent pas être gérés avec cette fonction : E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING ainsi que la plupart des E_STRICT d'un fichier lorsque set_error_handler() est appelé.

    Si une erreur survient avant que le script ne soit exécuté (par exemple un téléchargement de fichier), le gestionnaire d'erreurs personnalisé ne pourra pas être appelé, car il n'est pas encore enregistré.
    donc les erreurs fatales sont affichées par défaut,
    a moins que tu ne mette un @ devant ta fonction:
    ou que tu enleve le E_ERROR du error_reporting.

    Mais même là, l'erreur ne s'affichera pas mais le script s'arretera ....

    Comme l'a dit julp tu peux utiliser function_exists :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <?
    error_reporting(E_USER_ERROR);
    function errormanager($errno, $errstr) {
       switch ($errno) {
    	  case E_USER_ERROR:
              echo "<b>Erreur a moi</b>: $errstr<br />\n";
              break;
          default:
    		  echo "erreur";
              break;
       }
    }
    set_error_handler("errormanager");
     
    if (!function_exists("ftp_ssl_connect")) {
       trigger_error("FTP_CONNECTSSL_FAILED", E_USER_ERROR);
       return false;
    }
    ?>

  16. #16
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Système]Erreur Wins 4204 sous Windows Serveur 2003
    Par Invité dans le forum Windows Serveur
    Réponses: 11
    Dernier message: 19/04/2007, 12h03
  2. [Système] Erreur de syntaxe
    Par BnA dans le forum Langage
    Réponses: 3
    Dernier message: 25/05/2006, 16h35
  3. [Système] Erreur d'exécution d'un petit script
    Par couscoussier dans le forum Langage
    Réponses: 3
    Dernier message: 04/04/2006, 11h04
  4. [Système] Erreurs de guillemets
    Par djinko dans le forum Langage
    Réponses: 24
    Dernier message: 17/03/2006, 11h21
  5. message d'erreur perso lors fin de session
    Par zorba49 dans le forum ASP
    Réponses: 1
    Dernier message: 26/08/2005, 12h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo