[php] fatal error wegschrijven

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • hilarisch
  • Registratie: Maart 2002
  • Laatst online: 03-07 18:21
Na veel geklooi is de error handler bijna af. Alleen een belangrijk ding wil niet lukken.

Onderstaande functie wordt uitgevoerd bij het beeindigen van het parsen van een pagina. Dus ook als er een fatal error optreed.

PHP:
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
32
33
34
..
..
..

//---------------------------------------------
// checks if a fatal error has occured
function buffer_handler(& $buffer) {
    
    //check if buffer contains error line.
    if (ereg("(error</b>:)(.+)(<br)", $buffer, $regs))
    {
        //write error to log file
        @error_log ($regs[2], 3, '../log/error.log');

        @error_log ($regs[2], 1, 'my@mail.com');
        
        //if show errors isset in config print errors to screen
        if($this->show_errors == TRUE)
        {
            return "Error: ".$regs[2];
        }

        //redirect to an error message
        $this->redirect();
    }
    else
    {
        return $buffer;
    }
} 

..
..
..


Dit script werkt helemaal bij het optreden van een fatal error.

Er wordt netjes een mail geschreven. En ook het eventueel weergeven van een error op het scherm of het redirecten gaat goed.

Alleen het wegschrijven naar mijn bestand werkt niet. Dit werkt wel bij het optreden van een non-fatal error. Dus aan het wegschrijven opzich ligt het niet.

Is het niet mogelijk om een fatal error weg te schrijven in een bestand. Of kan het op een andere manier??

[ Voor 5% gewijzigd door hilarisch op 27-01-2004 22:23 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Iets van
PHP:
1
ini_set("log_errors", true);

werkt misschien wel. Niet getest, maar het zou misschien kunnen werken :)

[ Voor 8% gewijzigd door Verwijderd op 27-01-2004 23:27 ]


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Alleen het wegschrijven naar mijn bestand werkt niet. Dit werkt wel bij het optreden van een non-fatal error. Dus aan het wegschrijven opzich ligt het niet.
Misschien wordt er dan niet meer geparsed... :)
Fatal run-time errors. These indicate errors that can not be recovered from, such as a memory allocation problem. Execution of the script is halted.

[ Voor 30% gewijzigd door djluc op 27-01-2004 23:52 ]


Acties:
  • 0 Henk 'm!

  • hilarisch
  • Registratie: Maart 2002
  • Laatst online: 03-07 18:21
het zou goed kunnen dat het idd niet mogelijk is wat ik wil.

Maar is het dan niet gek dat ik, na een fatal-error, wel een mail kan versturen met daarin de error en niet de error kan wegschrijven naar een bestand.

Het is allebei dezelfde functie: error_log()

Acties:
  • 0 Henk 'm!

Verwijderd

Het is niet mogelijk om met een eigen errorhandler een fatal / parse errors af te vangen en er iets mee te doen. Je kunt dit dus niet automatisch doormailen.

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
hilarisch schreef op 28 januari 2004 @ 01:00:
het zou goed kunnen dat het idd niet mogelijk is wat ik wil.

Maar is het dan niet gek dat ik, na een fatal-error, wel een mail kan versturen met daarin de error en niet de error kan wegschrijven naar een bestand.

Het is allebei dezelfde functie: error_log()
Heb je nou ook werkelijk een mailtje ontvangen of niet? Want voor zover ik weet is het niet mogelijk, alleen door later de logs te bekijken.

Acties:
  • 0 Henk 'm!

  • hilarisch
  • Registratie: Maart 2002
  • Laatst online: 03-07 18:21
djluc schreef op 28 januari 2004 @ 11:43:
[...]

Heb je nou ook werkelijk een mailtje ontvangen of niet? Want voor zover ik weet is het niet mogelijk, alleen door later de logs te bekijken.
ik heb een fatal error gefaked door een niet bestaande functie aan te roepen.

Vervolgens wordt de pagina geredirect naar een foutmelding pagina.

En even later krijg ik een mail thuis met daarin de fatal error message.

---

Daarom vond ik het ook zo raar dat ik wel een mail kan ontvangen maar niet kan wegschrijven naar een bestand. Kennelijk is een fatal error niet zo fatal als het lijkt

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Je kan het eens proberen met xdebug ( http://www.xdebug.org/docs-settings.php )

En dan spelen met de setting xdebug.output_dir in de php.ini

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • hilarisch
  • Registratie: Maart 2002
  • Laatst online: 03-07 18:21
ik heb helaas niet de mogelijkheid te stoeien met de php.ini bij mijn provider.
Pagina: 1