Was gebt Ihr beim PHP Error Reporting aus ?

  1. Sterndi

    Sterndi Thread StarterMacUser Mitglied

    Mitglied seit:
    24.03.2004
    Beiträge:
    488
    Zustimmungen:
    0
    Hallo!

    Ich habe vor kurzem einen Server lokal aufgesetzt auf mac os x und gebe in php nomendan keine errors aus.

    Was für errors gebt ihr alle aus.
    Würde mich nur intressieren ;)
     
    Sterndi, 07.11.2005
  2. lindic

    lindicMacUser Mitglied

    Mitglied seit:
    20.11.2004
    Beiträge:
    197
    Zustimmungen:
    5
    In der Entwicklungsumgebung 2039. :cool:
     
    lindic, 07.11.2005
  3. maceis

    maceisMacUser Mitglied

    Mitglied seit:
    24.09.2003
    Beiträge:
    16.696
    Zustimmungen:
    602
    Ich arbeite sehr viel mit Perl, aber das macht für die Benatwortung der Frage keinen Unterschied.

    Ich benutze sehr viel eigene Fehlerkontrolle z.B. mit 'or die "Fehler: $!\n!";' insbesondere bei kritischen Aktionen wie Dateioperationen (öffnen, lesen, schreiben, anlegen von Dateien), Datenbankzugriffen, Zugriffen auf externe Server, Versenden von Mails etc.

    Das hat den Vorteil, dass man selber Steuern kann was im Fehlerfall passiert, welche Meldungen ausgegeben werden und ob das Skript abgebrochen wird oder nicht.

    HTH
     
    maceis, 07.11.2005
  4. Jakob

    JakobMacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    in produktiven Umgebungen wird's per php.ini komplett ausgeschaltet. Dann include ich mir dieses Skript:
    PHP:
    <?
    // Kein Fehler wird angezeigt
    error_reporting(0);

    // Fehler werden mit eigener Funktion bearbeitet
    set_error_handler('ErrorHandler');

    // Funktion versendet Mail
    function ErrorHandler($errno,$errstr,$errfile,$errline) {
        
    $error_msg    " - Es ist folgender Fehler auf Ihrer Seite aufgetreten:\n\n".$errstr."\n\nDatei: ".$errfile."\nZeile: ".$errline."\nDatum: ".date("d.m.Y, H:i:s")
        
    $email_addr    "spam@nospam.de";
        
    $remote_dbg "localhost";
        
    $email        true;
        
    $stdlog        true;
        
    $display    false;// Fehleranzeige
        
    $header        false;// nur mit ob_start();
        
    $notify        true;
        
    $halt_scripttrue;

        switch(
    $errno) {    
        case 
    E_USER_NOTICE
            case 
    E_NOTICE

                
    $halt_scriptfalse;
                
    $email        false;
                
    $type        "Notice";
                break;

            case 
    E_USER_WARNING
            case 
    E_COMPILE_WARNING
            case 
    E_CORE_WARNING
            case 
    E_WARNING

                
    $halt_scriptfalse;
                
    $type        "Warnung";
                break;

            case 
    E_USER_ERROR
            case 
    E_COMPILE_ERROR
            case 
    E_CORE_ERROR
            case 
    E_ERROR

                
    $type        "Fatal Error";
                
    $header        false;
                break;

            case 
    E_PARSE

                
    $type        "Parse Error";
                break;

            default: 

                
    $type        "Unbekannter Fehler";
                break;
        }

        if(
    $notify) {
            
    $error_msg        "Fehlertyp: ".$type.$error_msg;

            if(
    $email)    error_log($error_msg1$email_addr);
            if(
    $remote)    error_log($error_msg2$remote_dbg);
            if(
    $display)echo nl2br($error_msg);
            if(
    $stdlog) {
                if(
    $log_file == ""error_log($error_msg0);
                else 
    error_log($error_msg."\n"3$log_file);
            }
            if(
    $header)    header('Location: http://'.$_SERVER['HTTP_HOST'].'/error/errorphp.php');
        }
        if(
    $halt_script) exit -1;
    }
    ?>
    Es wird ne vorgefertigte Mail verschickt und wenn man mag ein anpassbarer Fehler angezeigt. Lass ich aber nur manuell bei wirklich kritischen Operationen, ansonsten kann's dem User wirklich egal sein, ob im Hintergrund ein Fehler aufgetreten ist.
     
    Jakob, 07.11.2005
  5. der_Kay

    der_KayMacUser Mitglied

    Mitglied seit:
    02.09.2004
    Beiträge:
    1.685
    Zustimmungen:
    8
    Bei jeder Funktion, die scheitern kann, einen user_error mit der gesamten Umgebung...
     
    der_Kay, 08.11.2005
  6. Sterndi

    Sterndi Thread StarterMacUser Mitglied

    Mitglied seit:
    24.03.2004
    Beiträge:
    488
    Zustimmungen:
    0
    Danke für eure rasche antworten ;)

    Die möglichkeiten sind unendlich ich überleg nemlich welche ich am server anzeigen lassen soll bzw. welche nicht. Das problem ist ich programmiere nebenbei auf den server und wenn ein fehler entsteht dann kann ich nicht rausfinden wo (wenn ich das error reporting ausgeschalten hab)

    ansonsten wenn ich es einschalte kommen sämtliche meldungen weil alles undefiniert ist *G* und das ist ja a net schön :)
     
    Sterndi, 08.11.2005
  7. Jakob

    JakobMacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    Naja, das error_reporting hat ja mehrere Stufen. Wenn Du die Warnungen nicht angezeigt bekommen magst, dann setz es halt einfach auf Error.

    Da die nativen PHP-Fehlermeldungen aber für den User sehr kryptisch sind und auch Details verraten, die man vielleicht nicht unbedingt weltweit abrufbar gestalten mag empfehle ich mein Skript ;) oder ähnliche Lösungen mit Mail-Versand.

    Fehler kommen per Mail dann so bei mir an:
    Code:
    Fehlertyp: Warnung - Es ist folgender Fehler auf Ihrer Seite aufgetreten:
    
    mysql_connect() [<a href='http://www.php.net/function.mysql-connect'>function.mysql-connect</a>]: Access denied for user: 'root@localhost' (Using password: YES)
    
    Datei: /www/htdocs/jakob/data/config.php
    Zeile: 17
    Datum: 31.10.2005, 22:59:25
     
    Jakob, 08.11.2005
  8. dms

    dms

    Genau! error_reporting ist ja keine globale Rahmenbedingung. Du kannst es in jedem Script einstellen wie Du es möchtest. Global komplet ausstellen und in den Dateien in denen Du arbeitest setzt Du ein E_ALL, oder was immer Dir beliebt.
     
Die Seite wird geladen...
Ähnliche Themen - gebt beim PHP
  1. mampfi
    Antworten:
    7
    Aufrufe:
    250
  2. Ichliebedich
    Antworten:
    1
    Aufrufe:
    1.032
    falkgottschalk
    10.09.2014
  3. robbieW
    Antworten:
    2
    Aufrufe:
    924
  4. muplo
    Antworten:
    7
    Aufrufe:
    689
    Saugkraft
    25.07.2012
  5. maceis
    Antworten:
    20
    Aufrufe:
    2.638