[Apache + PHP] PHP Error Handling -> Lege pagina

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Brains
  • Registratie: Oktober 2006
  • Laatst online: 04-03-2024
Hallo

ik heb apache en php geconfigureerd op mijn laptop, alleen krijg ik geen foutmeldingen in beeld. PHP werkt wel, maar de error reporting niet. Wanneer er een parse error optreed dan krijg ik een geheel lege pagina, zelfs geen headerinformatie of title.

phpinfo geeft de volgende waardes:
display_errors On
display_startup_errors On
error_reporting 0

Waardes overschrijven in met ini_set ofiets werkt ook niet.

Weet iemand hoe ik de foutmeldingen weer "inline" in de HTML krijg?

Acties:
  • 0 Henk 'm!

  • Reinstein
  • Registratie: Juni 2003
  • Laatst online: 08-07-2021

Reinstein

Half-Nul

Je moet ff in je ini kijken naar:
error_reporting
display_errors

Zie hier nog wat verder: http://php.net/manual/en/...n.php#ini.error-reporting

PC based oscilloscope


Acties:
  • 0 Henk 'm!

  • Brains
  • Registratie: Oktober 2006
  • Laatst online: 04-03-2024
Dit zijn de waardes die ik een test php-bestand heb gezet:

ini_set('error_reporting', E_ALL & E_STRICT);
ini_set('display_errors', "1");
ini_set('display_startup_errors', "1");

Dat zijn ook de waardes die in mijn php.ini staan.

phpinfo() geeft ook dat de php.ini is geladen waar die waardes in staan.

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Brains schreef op zaterdag 29 november 2008 @ 20:54:
Waardes overschrijven in met ini_set ofiets werkt ook niet.
Gek he, bij een parse error? Hij komt dan helemaal niet aan ini_set toe om je error_reporting te verhogen. Je moet op een andere manier het niveau van error_reporting aanpassen.

Acties:
  • 0 Henk 'm!

  • Reinstein
  • Registratie: Juni 2003
  • Laatst online: 08-07-2021

Reinstein

Half-Nul

E_ALL & E_STRICT lijkt me niet handig, dat geeft (int) 0 als resultaat.

Je moet er van maken: E_ALL | E_STRICT

& = bitwise AND
| = bitwise OR
^ = bitwise XOR
~= bitwise NOT

[ Voor 23% gewijzigd door Reinstein op 29-11-2008 21:13 ]

PC based oscilloscope


Acties:
  • 0 Henk 'm!

  • Brains
  • Registratie: Oktober 2006
  • Laatst online: 04-03-2024
dan moet die wel de melding geven dat er een parse error is. Maar mysql excepties worden ook niet getoond.

Maar lezen is ook een kunst, ik zeg waardes overschrijven met ini_set en heb de waardes gegeven die geconfigureerd zijn.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Brains schreef op zaterdag 29 november 2008 @ 21:13:
dan moet die wel de melding geven dat er een parse error is. Maar mysql excepties worden ook niet getoond.

Maar lezen is ook een kunst, ik zeg waardes overschrijven met ini_set en heb de waardes gegeven die geconfigureerd zijn.
Je geeft in je ini aan geen errors te willen zien met error_reporting op 0. Parse errors worden geraised vóór er code wordt uitgevoerd, dus ook vóór je ini_set. Ik vind het dus niet gek dat je geen errors krijgt. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Brains
  • Registratie: Oktober 2006
  • Laatst online: 04-03-2024
Het veranderen van E_All & E_Strict naar een ... | ... resulteert in:
error_reporting 8191
maar dan krijg ik alsnog geen foutmeldingen in beeld. Er lijkt alsof er ergens iets zit dat de hele php-uitvoer tegenhoud wanneer er een error optreed.

-----

OK even ter verduidelijking: het gebeurt bij alle excepties, dus niet alleen bij parse-errors. De parse-error was een voorbeeld, als ik zelf excepties throw dan krijg ik die melding ook niet te zien. Het proberen te overschrijven van waardes met ini_set was een probeersel om een misconfiguratie te ter plekke te verbeteren.

[ Voor 40% gewijzigd door Brains op 29-11-2008 21:22 ]


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Brains schreef op zaterdag 29 november 2008 @ 21:13:
dan moet die wel de melding geven dat er een parse error is.
Dat is de bedoeling ja, dat begrijp ik. Maar ini_set werkt daarvoor niet: bij een parse error wordt je script niet uitgevoerd, en de ini_set dus ook niet. En ini_set geldt alleen binnen dat script: bij een volgende request moet je weer opnieuw ini_set doen.
Maar mysql excepties worden ook niet getoond.
Dat klopt, die excepties moet je zelf afhandelen. Heeft echter niets met dit probleem te maken.

Om te overtuigen dat met jouw PHP installatie niets mis is, voer dit script maar eens uit:
PHP:
1
2
ini_set('error_reporting', E_ALL);
blah();

Acties:
  • 0 Henk 'm!

  • Reinstein
  • Registratie: Juni 2003
  • Laatst online: 08-07-2021

Reinstein

Half-Nul

http://www.php.net/manual/en/errorfunc.constants.php

E_ALL & E_STRICT = 0
E_ALL | E_STRICT = 32767

of terwijl, met die AND operatie zet je alles uit ipv alles aan ;)

-----

Wat staat er nu in je INI dan bij error_reporting?

[ Voor 15% gewijzigd door Reinstein op 29-11-2008 21:24 ]

PC based oscilloscope


Acties:
  • 0 Henk 'm!

  • Brains
  • Registratie: Oktober 2006
  • Laatst online: 04-03-2024
In mijn php.ini staat nu
error_reporting = E_ALL | E_STRICT
dit resulteert in phpinfo() in
error_reporting 8191

Met een E_ALL & E_STRICT werdt het een 0.

Ik heb nu alle errorconfiguratie uit de .htaccess en vhost config gehaald. Maar ik denk dat lag aan de error_reporting waarde. Zoals ik uit de link die Reinstein stuurde. Want nu krijg ik wel de meldingen in beeld. Bedankt!

Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 19:57

Kees

Serveradmin / BOFH / DoC
Overigens hoef je daar helemaal geen ini_set voor te gebruiken; gewoon error_reporting(E_ALL); werkt ook in dit geval. Erg handig voor debuggen; if (remote-ip = jouw-ip) error_reporting(E_ALL) else error_reporting(0);

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan

Pagina: 1