Avatar billede Slettet bruger
15. marts 2011 - 12:20 Der er 7 kommentarer og
1 løsning

PHP debugging med default output-buffering

Siden jeg sidst bøvlede med PHP, for ca. ½ år siden, er ourput buffering blevet default
- af performance hensyn, monikke..

Men nu finder jeg det temmelig vanskeligt at debugge!

Uanset hvilken fejl jeg laver: "internal server error 500" (fra live HTTP headers)
- selv for noget så simpelt som et glemt semikolon..

Hvad gør en klog (og let doven) ?
Avatar billede repox Seniormester
15. marts 2011 - 12:30 #1
Siden hvornår er output buffering blevet default?

Jeg tror det er dit server-setup du skal kigge på. Prøv at kigge i dine access logs eller slå fejlmeddelelser til.
Avatar billede Slettet bruger
15. marts 2011 - 12:56 #2
Liige hvornår kan jeg ikke sige, men den gør det. Nu.

Eksempel:

<html><body><?php
echo "start";
$a = 25
echo "slut";
?><body></html>

Altså manglende ; på linje 3 = INTET output, end ikke <html>

Sådan var det ikke sidst..
- jeg har ikke "pillet ved noget" - udover at tillade alle Ubuntu-updates..
Avatar billede repox Seniormester
15. marts 2011 - 13:11 #3
Det vat egentlig et retorisk spørgsmål... som udgangspunkt er output buffering ikke slået til i et almindeligt setup. Du skal aktivt tilvælge den form for funktionalitet i din konfiguration.

Jeg tror dit problem er at du udvikler i et produktionsmiljø, hvor fatale php fejl resulterer i en status 500. Advarsler og bemærkninger undertrykkes. Du skal enten kigge i din error log eller også skal du slå error reporting til.
Avatar billede Slettet bruger
15. marts 2011 - 13:33 #4
Hm.. Kan det være "gået i produktion" af sig selv ?

error_reporting() returnerer 22527
hvis jeg herefter sætter den med: error_reporting(E_ALL)
returnerer error_reporting() 30719

Men phpinfo() (under Core) siger stadig: display_errors = off  off
- Og et manglende semikolon slukker stadig lyset fuldstændigt.
Avatar billede Slettet bruger
15. marts 2011 - 13:46 #5
Selv efter: ini_set('display_errors','On')
kommer der INTET output hvis jeg glemmer et ;
Avatar billede Slettet bruger
15. marts 2011 - 13:56 #6
Med: ini_set('display_errors','On')
vil den gerne give warnings, f.eks: Division by zero
men stadig ikke "fatale" som et manglende ;
Avatar billede Slettet bruger
15. marts 2011 - 14:16 #7
Ahh, at sætte display_errors vha. ini_set er IKKE det samme som at sætte den i php.ini.
- hvis jeg sætter den til "On" i php.ini virker det igen som før..

Dét var et par "sjove" timer...


Men du havde ret, smid et svar og få din bekomst.
Avatar billede repox Seniormester
16. marts 2011 - 07:50 #8
Jamen, jeg er glad for at du fik det til at virke...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester