[PHP] Dubbele errors in CLI

Pagina: 1
Acties:
  • 106 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
Ik heb er last van dat elke Notice/Warning/Error in PHP-CLI (5.1.6 Win32) bij mij dubbel afgedrukt wordt en 1 van de 2 ook nog eens immuun lijkt voor output buffering:

testscriptje:
PHP:
1
2
3
4
ob_start();
$c = 1/0;
$buffer = ob_get_clean();
echo "\n\nBuffer: ".$buffer;


geeft als output:
D:\dev\test>php dbz.php
PHP Warning:  Division by zero in D:\dev\test\dbz.php on line 3


Buffer:
Warning: Division by zero in D:\dev\test\dbz.php on line 3

D:\dev\test>


Als ik de output wegschrijf naar een textbestand met het DOS commando ">", dan komt 1 van de errors nog steeds terug:

geeft als output:
D:\dev\test>php dbz.php > dbz.txt
PHP Warning:  Division by zero in D:\dev\test\dbz.php on line 3
D:\dev\test>


Ik heb geen idee waar die extra melding vandaan komt en hoe ik die weg kan krijgen. Kon ook niks vinden met zoeken...iemand een idee?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

De ene wordt naar de out stream geschreven en de andere naar de error stream. Met de buffering vang je alleen de out stream af. Als het in windows hetzelfde werkt als linux kun je het volgende proberen

D:\dev\test>php dbz.php 2> error.txt
Dan zullen de scherm en de bestands melding waarschijnlijk omgewisseld zijn

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
thx, dat werkt prima. is er geen manier om STDERR standaard naar een vaste file te sturen en de andere errors gewoon naar STDOUT? de ini setting display_errors heeft alleen invloed op die laatste...
ja dus, error_log ;)

[ Voor 6% gewijzigd door Genoil op 05-12-2006 18:08 ]


Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 19-09 16:51

LauPro

Prof Mierenneuke®

Je kan een errorhandler maken die de errors af vangt, het is dan aan jou om de naat stdout of stderr te sturen.

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!