Der Martin: Mein Fehlerabfangjäger funktioniert nicht mehr

Beitrag lesen

Hallo,

mein Fehlerabfangjäger funktioniert seit der Umstellung des Servers auf Apache-Version 2.2.10 (Unix) mit PHP5 5.2.6 nicht mehr.

<?php header("HTTP/1.1 301 Moved Permanently");

header("Location: http://www.example.com/error.shtml?00000{$error}de");

$header  = "Content-Type: text/plain; charset="us-ascii"\n";
$header .= "Content-Transfer-Encoding: 7bit\n";
$header .= "FROM: postmaster@example.com\n";
$msg  = "HTTP-Fehlercode: $error\n\n";
$msg .= "Browser: $HTTP_USER_AGENT\n\n";
$msg .= "IP-Adresse: $REMOTE_ADDR\n\n";
$msg .= "Angefordert: $REQUEST_URI\n\n";
$msg .= "Herkunft: $HTTP_REFERER\n\n";
$mailto = "webmaster@example.com";

mail("$mailto","Fehlermeldung $error","$msg","$header"); exit; ?>

  
Du solltest dich fragen, wo die Variable $error herkommt. Fällt die einfach vom Himmel? Ja, zu Zeiten von PHP4 war es noch üblich, dass register\_golbals an war. Aber du schreibst, dass auch vorher schon eine PHP-Version 5.x verwendet wurde, also sollte man davon ausgehen, dass register\_globals schon längst "off" war.  
  

> Ich rufe extra eine nicht existierende Datei auf. Dabei sollte dann schlußendlich die URL http://www.example.com/error.shtml?00000404de aufgerufen werden, doch es wird http://www.example.com/error.shtml?00000de ohne »404« zwischen »00000« und »de« aufgerufen.  
  
Works as designed.  
  

> in der Zwischenzeit wird eine fast leere Mail (siehe Beispielmail 1) an webmaster@example.com ohne nähere Details zum Fehler versendet.  
  
Ja, auch die Variablen $HTTP\_USER\_AGENT, $REMOTE\_ADDR, $REQUEST\_URI und $HTTP\_REFERER gibt es schon lange nur noch im Museum. All diese Information findest du im Array $\_SERVER.  
  

> Für mich heißt das, daß die PHP-Datei nicht richtig verarbeitet wird.  
  
Für mich heißt das, dass der Autor des Scripts schon seit Jahren geschludert hat und sich auf Dinge verlassen hat, die schon sehr lange nur noch von wenigen Hostern aus Gutmütigkeit unterstützt werden.  
  

> Kann mir bitte jemand sagen, was ich an der error.php ändern muß, damit das Ganze wieder funktioniert? Unter http://ch2.php.net/manual/de/language.variables.superglobals.php werde ich heute irgendwie nicht mehr ganz schlau.  
  
Was ist daran unklar?  
  
So long,  
 Martin  

-- 
Die letzten Worte des Privatdetektivs:  
Jetzt wird es mir klar: SIE sind der Mörder!