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 :

Gérer les erreurs E_ERROR


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Points : 54
    Points
    54
    Par défaut Gérer les erreurs E_ERROR
    Bonjour,

    Je souhaiterais attraper une erreur de type E_ERROR, mais je ne sais pas comment faire ; il y a bien la solution du set_error_handler() mais selon la doc http://fr.php.net/manual/fr/function...or-handler.php ce type d'erreur n'est pas gérable avec.

    Je m'explique. Dans la partie du php "pur", j'utilise require_once(test1.php); qui à son tour require_once(test2.php);. Si test1.php ou test2.php n'existe pas, l'execution du script se termine, ce qui est normal, c'est le comportement que je souhaite.
    Maintenant, je souhaite réutiliser certaines classes que j'ai développé et que j'utilise dans la partie php "pur" dans une petite partie ajax ; n'y connaissant pas grand chose à ajax, j'ai suivi le tuto http://siddh.developpez.com/articles/ajax/ et c'est là que le bas blesse ! Voici mon ajaxxml.php personnalisé :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php
    function ajax_include_once($filename) {
            ob_start();
    	include_once($filename);
            $content = rtrim(ob_get_contents());
    	//while (ob_get_level()) {
    	        ob_end_clean();
    	//}
    	if ($content != '') {
    		return $content;
        	}
    	else {
        		return 'OK';
    	}
    }
     
    $selection = $_POST['selection'];
    $value = $_POST['value'];
     
    $response  = '<?xml version="1.0"?>';
    $result = ajax_include_once($_SERVER['DOCUMENT_ROOT'] . '/test1.php');
    if ($result == 'OK') {
    	$response .= "<response><message><![CDATA[<select name=\"menu\"><option></option><option>toto</option><option>titi</option></select>]]></message></response>";
    }
    else {
    	$response .= "<response><message><![CDATA[<p id=\"error\">erreur:$result</p>]]></message></response>";
    }
    header('Content-Type: text/xml');
    echo $response;
    }
    ?>
    J'ai réalisé la fonction ajax_include_once() afin d'attraper les warnings du include_once() avant le header() (logique ). Ainsi la partie ajax affiche l'erreur d'include si test1.php n'existe pas. Dans ce cas, "tout va bien", je suis capable de gérer l'erreur survenue, à savoir que le include() a foiré. En quelques sortes, tout va bien.

    Et donc voici mon problème : test1.php require_once("test2.php"); et si test2.php n'existe pas, non seulement l'exécution du script s'arrête mais en plus cela écrit un content-type html avant le header() malgré le ob_end_clean() ; ainsi dans la partie ajax xhr.responseXML est null.

  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par sql_ignorant Voir le message
    Je souhaiterais attraper une erreur de type E_ERROR, mais je ne sais pas comment faire ; il y a bien la solution du set_error_handler() mais selon la doc http://fr.php.net/manual/fr/function...or-handler.php ce type d'erreur n'est pas gérable avec.
    normalement la fonction "include" produit une erreur E_WARNING donc tu peux utiliser "set_error_handler"

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    Oui, je suis d'accord, mais je souhaiterais que la partie php "pure" lance cette erreur car dans cette partie, mes scripts doivent se stopper en cas d'erreur ; typiquement, si tu étends une classe et que la classe mère est introuvable, une erreur importante va se produire (méthode mère() inexistante, etc), il faut donc stopper l'exécution du script.

  4. #4
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    je n'ai pas compris à quel endroit tu veux intercepter l'erreur, montre nous l'endroit dans le code

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $result = ajax_include_once($_SERVER['DOCUMENT_ROOT'] . '/test1.php');
    if ($result == 'OK') {
    	// Tout va bien
    }
    else {
    	// Gestion de l'erreur d'include/require
    }
    le contenu de test1.php est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    require_once($_SERVER['DOCUMENT_ROOT'] . '/test2.php');
    ?>
    Le fichier test2.php n'existe pas afin de déclencher une erreur.

  6. #6
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    ah d'accord dans ce cas le plus pratique est de passer par des exceptions.
    d'abord mets en place un gestionnaire qui remplace les erreurs PHP par des exceptions, c'est juste les lignes qui sont là :
    http://php.net/class.errorexception#...ption.examples

    et donc pour attraper l'exception tu fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try {
        ajax_include_once($_SERVER['DOCUMENT_ROOT'] . '/test1.php');
     
        // Tout va bien
     
    } catch (ErrorException $e) {
     
        // Gestion de l'erreur d'include/require
     
    }
    par contre ça attrape n'importe quelle erreur qui se passe pendant l'exécution de "ajax_include_once". si tu veux différencier une erreur d'"include" d'une autre, il faudra créer plusieurs exceptions

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    Ah, je ne savais pas que l'on pouvait mettre un bloc try catch dans un script classique, sans objet.

    Mais, malheureusement, cela ne fonctionne pas non plus, il suffit de charger ce script dans un navigateur :
    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
    <?php
    function exception_error_handler($errno, $errstr, $errfile, $errline) {
    	throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
    }
    set_error_handler("exception_error_handler");
    try {
    	require('test2.php');
    }
    catch (ErrorException $e) {
    	$response  = '<?xml version="1.0"?>';
    	$response .= "<response><message><![CDATA[<p id=\"error\">erreur!</p>]]></message></response>";
    	header('Content-Type: text/xml');
    	echo $response;
    }
    ?>
    En effet, le retour de l'erreur n'est pas au format xml, c'est donc que cela n'a pas fonctionné. Je suppose que c'est toujours pour la raison que set_error_handler() n'est pas capable de gérer les erreurs E_ERROR.
    A force de chercher un peu partout, je commence à croire que ce que je souhaite faire est impossible , peut être devrais-je trouver une astuce pour contourner ça.

  8. #8
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par sql_ignorant Voir le message
    Mais, malheureusement, cela ne fonctionne pas non plus, il suffit de charger ce script dans un navigateur :
    tu as mis "require" qui bloque tout. si tu veux tester si le fichier existe ou pas il faut utiliser "include"

    comment ça se fait que le fichier n'existe pas toujours, quelqu'un d'autre que toi touche au fichier ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    tu as mis "require" qui bloque tout. si tu veux tester si le fichier existe ou pas il faut utiliser "include"
    J'ai fais ça histoire de faire un test simple en un seul fichier. Mais comme je l'explique plus haut, je souhaite réutiliser une API que j'ai déjà développé et qui fonctionne très bien en php "pur" et il est donc hors de question de modifier une bonne centaine de fichier pour remplacer les require par des include avec un gestionnaire d'exception afin de résoudre un problème qui n'arrive que dans les rares cas où je souhaite faire du ajax ; donc si tu préfères :
    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
    <?php
    function exception_error_handler($errno, $errstr, $errfile, $errline) {
    	throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
    }
    set_error_handler("exception_error_handler");
    try {
    	include('test1.php');
    }
    catch (ErrorException $e) {
    	$response  = '<?xml version="1.0"?>';
    	$response .= "<response><message><![CDATA[<p id=\"error\">erreur!</p>]]></message></response>";
    	header('Content-Type: text/xml');
    	echo $response;
    }
    ?>
    avec test1.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    require('test2.php');
    ?>
    Et donc cela ne fonctionne pas.

    Je donne ces exemples simples afin de mettre en évidence facilement mon problème, mais si tu veux plus de détail qui ne finalement n'apporteront rien, mon API est de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    require_once('test2.php');
    class test1 extends test2 {
    }
    ?>
    Donc si test2.php est absent, il est indispensable de stopper l'exécution.

    Citation Envoyé par nosferapti Voir le message
    comment ça se fait que le fichier n'existe pas toujours, quelqu'un d'autre que toi touche au fichier ?
    Non, c'est vrai que je suis le seul à gérer cette API en théorie, mais si j'ai fais cette API, c'est parce que je souhaite mettre l'API sur un serveur différent de l'application afin de la partager avec d'autres applications web du même cru ; dans la mesure où include() ou require() permet d'aller chercher des fichiers via http, il faut donc gérer le cas où le serveur fournissant l'API est down. Et puis aussi parce que c'est plus propre comme code .

  10. #10
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par sql_ignorant Voir le message
    il est donc hors de question de modifier une bonne centaine de fichier pour remplacer les require par des include avec un gestionnaire d'exception
    dans ce cas je ne peux pas t'aider
    "require" et "require_once" sont des fonctions prévues pour bloquer complètement le script quand le fichier n'est pas présent donc tu ne peux pas récupérer l'erreur

  11. #11
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    Citation Envoyé par sql_ignorant Voir le message
    Et donc voici mon problème : test1.php require_once("test2.php"); et si test2.php n'existe pas, non seulement l'exécution du script s'arrête mais en plus cela écrit un content-type html avant le header() malgré le ob_end_clean() ; ainsi dans la partie ajax xhr.responseXML est null.
    Merci de faire un tour sur PHP Manual. C'est la particularité sur require() par rapport à l'include() => il stop l'exécution du script

    Pour ce qui est du ob_end_clean() vu que le script n'est pas exécuté entièrement, la fonction n'est forcément jamais appellée....


    Sinon pour ton problème, ceci devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function my_include($file) {
         if(@!include($file)) { // ici perso j'sais pas si on doit mettre @ avant ou apres le !
              echo "Erreur lors de l'inclusion de ".$file;
         }
    }

    Pour ce qui est du remplacement dans une centaine de fichiers... Notedpad++ est ton ami

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    Bonsoir darkstar123456,

    Oui, j'ai bien compris la différence entre require et include ; c'est bien pour cela que pour la partie php "pur", je ne souhaite pas faire le remplacement de l'un par l'autre car c'est le comportement que je souhaite dans ce cas. C'est simplement que dans un cas particulier, à savoir faire appel à une librairie php perso bien fournie en ajax, cela me pose problème...
    En fait, ce qui m'a donné espoir, c'est le commentaire de la documentation officielle php.net où on peut lire le post http://fr.php.net/manual/fr/function...dler.php#84345 ; pour résumer, cette personne explique que ce n'est pas totalement vrai qu'on ne peut pas gérer les erreurs dites graves, au moins exceptée E_ERROR, celle qui justement m'intéresse, mais je n'arrive pas à mettre en oeuvre cette astuce. Si en ce qui te concernes, tu as réussi à faire cette bidouille, je reste malgré tout preneur.
    Mais bon, me voilà un peut résigné à y arriver. Donc j'en suis arrivé à gérer le problème dans la partie ajax ; cela m'oblige donc à gérer une réponse par défaut dans la partie php quand cela est gérable, et la même réponse par défaut dans la partie ajax. Cela implique donc une duplication de code et donc un code plus difficile à maintenir.

    Mais bon, si c'est pas possible, c'est pas possible ! Sert à rien de s'entêter ! Donc merci malgré tout pour votre aide les gars !

  13. #13
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par sql_ignorant Voir le message
    En fait, ce qui m'a donné espoir, c'est le commentaire de la documentation officielle php.net où on peut lire le post http://fr.php.net/manual/fr/function...dler.php#84345 ; pour résumer, cette personne explique que ce n'est pas totalement vrai qu'on ne peut pas gérer les erreurs dites graves, au moins exceptée E_ERROR, celle qui justement m'intéresse, mais je n'arrive pas à mettre en oeuvre cette astuce. Si en ce qui te concernes, tu as réussi à faire cette bidouille, je reste malgré tout preneur.
    oh ! je ne connaissais pas cette astuce
    je viens de tester et chez moi ça fonctionne avec ce code

    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
    function error_handler($donnees)
    {
        $erreur = error_get_last();
     
        if (isset($erreur)) {
            $donnees .= "<br/>\n";
            $donnees .= "<br/>\n";
            $donnees .= "erreur de type {$erreur['type']}";
        }
     
        return $donnees;
    }
     
    ob_start('error_handler');
     
    require 'fichier inexistant';
    echo 'bonjour';
    ça a l'air pratique comme astuce, on peut même faire une redirection en cas d'erreur

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    Bonsoir nosferapti,

    Cela fonctionne chez toi ? Ici, j'ai l'impression que cela ne marche pas comme je le souhaiterais. Voici le code html du retour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <br />
    <b>Warning</b>:  require(fichier inexistant) [<a href='function.require'>function.require</a>]: failed to open stream: No such file or directory in <b>/var/www/test/test.php</b> on line <b>17</b><br />
    <br />
    <b>Fatal error</b>:  require() [<a href='function.require'>function.require</a>]: Failed opening required 'fichier inexistant' (include_path='.:/usr/share/php:/usr/share/pear') in <b>/var/www/test/test.php</b> on line <b>17</b><br />
     
    <br/>
    <br/>
    erreur de type 64
    Comme tu peux le voir, le "echo 'bonjour';" ne s'affiche pas. Et si je place un "ob_end_clean();" au sein de la méthode "function error_handler($errno, $errstr, $errfile, $errline)" pour ne pas afficher cette erreur, cela me retourne un fichier php que firefox me demande de télécharger, au lieu de l'afficher ; et une fois ce fichier téléchargé, en l'éditant, le fichier est vide (taille 0 octet).

    Aussi, peux tu me poster le code de la page de retour mais aussi me dire quelle est ta configuration ? En ce qui me concerne, la config de mon serveur personnel de dev est : Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny3 with Suhosin-Patch Server et mon client est perso de dev : ubuntu 8.04 - Hardy Heron - avec firefox 3.0.14.

  15. #15
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par sql_ignorant Voir le message
    Comme tu peux le voir, le "echo 'bonjour';" ne s'affiche pas.
    c'est normal, au moment de l'erreur, c'est la fonction de gestion d'erreur qui est lancée donc si tu veux faire un affichage il faut le faire dans cette fonction

    Citation Envoyé par sql_ignorant Voir le message
    pour ne pas afficher cette erreur,
    pour ne pas afficher l'erreur il suffit d'effacer ce qu'il y a dans la variable $donnees
    la fonction de gestion d'erreur ne produit pas d'affichage "normal", elle se contente de modifier l'affichage qui allait être envoyé au navigateur

    pour reprendre le test que tu as mis plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $result = ajax_include_once($_SERVER['DOCUMENT_ROOT'] . '/test1.php');
    if ($result == 'OK') {
        // Tout va bien
    }
    else {
        // Gestion de l'erreur d'include/require
    }
    ça donnerai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function error_handler($donnees)
    {
        $erreur = error_get_last();
     
        if (isset($erreur)) {
            // Gestion de l'erreur d'include/require
            // modification de $donnees
        }
     
        return $donnees;
    }
     
    ob_start('error_handler');
    // Tout va bien

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    Je me suis exprimé avec les pieds.
    Je ne souhaite pas afficher l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <br />
    <b>Warning</b>:  require(fichier inexistant) [<a href='function.require'>function.require</a>]: failed to open stream: No such file or directory in <b>/var/www/test/test.php</b> on line <b>17</b><br />
    <br />
    <b>Fatal error</b>:  require() [<a href='function.require'>function.require</a>]: Failed opening required 'fichier inexistant' (include_path='.:/usr/share/php:/usr/share/pear') in <b>/var/www/test/test.php</b> on line <b>17</b><br />
    mais l'erreur personnalisée qui se trouve dans $donnees, oui.
    La raison est simple : comme c'est une partie ajax, je souhaite retourner du xml grâce à header('Content-Type: text/xml'). Mais la fonction header() ne fonctionne que si rien n'a été écrit avant son appel. Et si j'appelle la fonction header() dès le début de error_handler(), le fichier xml n'est pas valide à cause du code html ci-dessus. C'est pourquoi j'ai besoin de faire ob_end_clean() et si je fais ça, le fichier retourné est totalement vide ; voiçi un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function error_handler($donnees)
    {
        $erreur = error_get_last();
        ob_end_clean();
        if (isset($erreur)) {
            $donnees .= "<br/>\n";
            $donnees .= "<br/>\n";
            $donnees .= "erreur de type {$erreur['type']}";
        }
     
        return $donnees;
    }

  17. #17
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par sql_ignorant Voir le message
    C'est pourquoi j'ai besoin de faire ob_end_clean() et si je fais ça, le fichier retourné est totalement vide ;
    non parce que dans ce cas tu es déjà dans un gestionnaire de flux de retour donc le comportement est différent. l'erreur n'a pas encore été envoyée en sortie mais elle est dans la variable $donnees donc tu peux cacher ce message en modifiant cette variable

    essaye ça :

    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
    21
    22
    function error_handler($donnees)
    {
        $erreur = error_get_last();
     
        if (isset($erreur)) {
            $donnees  = '<?xml version="1.0"?>';
            $donnees .= "<response><message><![CDATA[<p id=\"error\">erreur!</p>]]></message></response>";
        }
     
        return $donnees;
    }
     
    ob_start('error_handler');
     
    header('Content-Type: text/xml');
     
    require 'fichier inexistant';
     
    echo '<?xml version="1.0"?>';
    ?>
     
    <response><message>bonjour</message></response>

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    D'accord !
    Effectivement, ta solution fonctionne en l'état.
    Je vais essayer de l'injecter dans ma partie ajax et je reviendrai afin de te tenir au courant.

Discussions similaires

  1. [Sécurité] [PEAR::Auth] Gérer les erreurs de connexion
    Par lamimolette75 dans le forum Langage
    Réponses: 1
    Dernier message: 18/09/2006, 18h47
  2. Proc. Stock. : Gérer les erreurs
    Par audreyc dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 29/03/2006, 14h51
  3. gérer les erreurs intebase avec delphi
    Par mondanikoffi dans le forum Bases de données
    Réponses: 1
    Dernier message: 14/12/2004, 15h46

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