maik87
Goto Top

Apache sendet Fehler 500 im Header baut aber Seite fehlerfrei auf

Hallo zusammen,

ich musste mit meiner Website umziehen und stehe nun vor folgendem Problem:

Die Website wird im Browser korrekt aufgebaut, im Header steht jedoch der Code 500. Google und co mögen dies natürlich nicht...

Die LogDatein auf dem Server sind alle samt leer, ein richtiger Fehler 500 ist es auch nicht. Die Seite wird ja korrekt aufgebaut. Auch auf die Fehlerseite 500 reagiert der Server nicht - 404 etc werden akzeptiert. Also kann es ja nur am Header liegen...

Aber wie wird dieser "versaut"?

Content-ID: 196341

Url: https://administrator.de/forum/apache-sendet-fehler-500-im-header-baut-aber-seite-fehlerfrei-auf-196341.html

Ausgedruckt am: 22.12.2024 um 17:12 Uhr

Hitman4021
Hitman4021 30.12.2012 um 11:26:52 Uhr
Goto Top
Hallo,

was ist das für eine Website? PHP? HTML?
Apache Konfig?
Apache LogLevel?

Gruß
Guenni
Guenni 30.12.2012 um 13:03:01 Uhr
Goto Top
Hi Maik87,

Errorcode 500 ist ein Internal Server Error, der auftritt, wenn z.B. ein CGI-Script nicht gestartet werden konnte.

Das kommt vor, wenn Scripte bearbeitet oder kopiert wurden, was ja bei deinem Umzug der Fall ist.

Dann ändern sich Eigentums- und/oder Ausführungsrechte, was bei einem CGI-Script nicht sein darf.

Andere Fehlerquellen können sein:

- Hat sich aus irgendeinem Grund die Schreibweise (Groß/Klein) geändert?

- Sind bestimmte Dateiendungen (*.cgi, *.pl, oder gar keine) vom Provider vorgeschrieben?

- Sind die Dateien im Ascii-Modus übertragen worden?

Gruss
Günni

Quellen:

http://de.selfhtml.org/servercgi/server/httpstatuscodes.htm

http://de.selfhtml.org/servercgi/cgi/cgipublik.htm
Maik87
Maik87 30.12.2012 um 13:21:05 Uhr
Goto Top
Hallo,
die Seite ist komplett in PHP gehalten.

Wie der Apache Loglevel aussieht, keine Ahnung. Der Provider sagt nur, dass der Log keine Fehler ausweist.

Der PHP-Log, den ich selbst im Zugriff hab, schweigt sich aus.
Maik87
Maik87 30.12.2012 um 13:57:37 Uhr
Goto Top
Zitat von @Guenni:
Hi Maik87,

Errorcode 500 ist ein Internal Server Error, der auftritt, wenn z.B. ein CGI-Script nicht gestartet werden konnte.

Ich weiß. Jedoch bekomme ich ja nicht die Fehlerseite 500 sondern nur die 500 im Header. Die Seite wird dem User übertragen, als wenn alles korrekt wäre.

Das kommt vor, wenn Scripte bearbeitet oder kopiert wurden, was ja bei deinem Umzug der Fall ist.

Dann ändern sich Eigentums- und/oder Ausführungsrechte, was bei einem CGI-Script nicht sein darf.

Die Seite besteht ausschließlich aus *.php und *.jpg. CGI-Scripte etc sind keine im Einsatz.

Andere Fehlerquellen können sein:

- Hat sich aus irgendeinem Grund die Schreibweise (Groß/Klein) geändert?

Auf den ersten Blick nicht.

- Sind bestimmte Dateiendungen (*.cgi, *.pl, oder gar keine) vom Provider vorgeschrieben?

Weiß ich nicht. Da die Seite aber nur aus PHP besteht und diese Endung funktioniert, gehe ich nicht davon aus, dass der Fehler hier zu suchen ist.

- Sind die Dateien im Ascii-Modus übertragen worden?

Ich habe die Website als zip-Datei von meinem alten Provider bekommen, auf den neuen Webspace geladen und vom Provider entpacken lassen.


Inzwischen habe ich schon folgendes (zufällig) herausgefunden:
Der Fehler tritt nur auf, wenn Bilder über eine bestimmte PHP-Funktion im Spiel sind. Über dem img-tag eingebunden, sind sie kein Problem.

Ich werde mal den Code analysieren und schauen, auf was diese Funktion alles zugreift etc. Vielleicht wurde eine Datei oder ein Ordner nicht richtig übertragen, es fehlen irgendwo Schreibrechte oder durch die anderen PHP Version (die aktuelle ist 5.3.3 - die alte weiß ich nicht), funktioniert eine gewisse Funktion nicht mehr. Eventuell auch eine Providereinstellung - wobei dieser eigentlich sehr großzügig mit den Berechtigungen um sich wirft.
Hitman4021
Hitman4021 30.12.2012 um 14:39:44 Uhr
Goto Top
Hallo,

deine PHP Seite kann auch als CGI ausgeführt werden.

Leg mal eine PHP Datei mit einem phpinfo() an und schau ob der gleiche Fehler auftritt.
Und lass dir von PHP dein eigenes ErrorLog mit PHP Fehlern mitschreiben!

Gruß
Maik87
Maik87 30.12.2012 um 14:45:23 Uhr
Goto Top
Leg mal eine PHP Datei mit einem phpinfo() an und schau ob der gleiche Fehler auftritt.
Hab ich schon - geht. Andere von mir erstellte Scripte laufen auch.

Und lass dir von PHP dein eigenes ErrorLog mit PHP Fehlern mitschreiben!
Mach ich... Ist leer.

Konnte den Fehler inzwischen sooo weit eingrenzen, dass ich eine Funktion ausfindig machen konnte, die Thumbnails erstellt. Ist diese auskommentiert, läuft es. Ich muss nur noch finden, wo diese deklariert ist.

Aber wieso nur der Header meckert aber die Seite aufgebaut wird, verstehe ich bis jetzt noch nicht...
dog
dog 30.12.2012 um 14:49:28 Uhr
Goto Top
Aber wieso nur der Header meckert aber die Seite aufgebaut wird, verstehe ich bis jetzt noch nicht...

Wahrscheinlich weil PHP im Blindflug-Modus läuft.
Füg mal in die entsprechende PHP-Datei, die du im Browser aufrufst ganz an den Anfang folgendes ein:
<?php
  error_reporting(E_ALL|E_STRICT);
  ini_set('display_errors','On');  
?>
Maik87
Maik87 30.12.2012 um 15:19:40 Uhr
Goto Top
Zitat von @dog:
<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors','On');
?>


Das wars!!

Ich hatte nur error_reporting(E_ALL); - ohne |E_STRICT
ini_set('display_errors','On'); ist absichtlich auf off, da Produktivsystem.

Jetzt steht folgendes im Log:

PHP Parse error: syntax error, unexpected T_INC in

Wer oder was ist T_INC? Die angesprochene Zeile ist leer - in der Nähe entdecke ich auf den ersten Blick keinen Fehler.

Ich habe noch paar Division by zero gefunden. Die versuche ich mal abzufangen. Nur merkwürdig, dass es beim alten Provider problemlos lief.


DANKE schonmal!!
dog
dog 30.12.2012 um 15:33:08 Uhr
Goto Top
Wer oder was ist T_INC?

http://php.net/manual/en/tokens.php
Maik87
Maik87 30.12.2012 um 17:00:31 Uhr
Goto Top
Danke!

So - Problem "behoben". PHP meckert nicht mehr, browserseitig läuft es auch. Aber der 500er ist wieder im Header. face-sad
Hitman4021
Hitman4021 30.12.2012 um 17:03:27 Uhr
Goto Top
Hallo,

du hast irgendwo im PHP Code einen Fehler.
Auf dem alten Server bestand das Problem nicht?
Der Code ist der gleiche?
Gleiche PHP Version?
Gleiche PHP Config?

JavaScript benutzt du nicht oder?

Gruß
Maik87
Maik87 30.12.2012 um 17:11:06 Uhr
Goto Top
Ja genau, gleicher Code, neuer Server.
Beides Version 5.3.* Die genaue Version kenne ich vom alten Server nicht.
Wie die Configs aussehen - keine Ahnung!

JavaScript ist prinzipiel im Einsatz, jedoch nicht in diesem Teil des Scripts.
Maik87
Maik87 30.12.2012 aktualisiert um 19:22:02 Uhr
Goto Top
Es spuckt wieder Fehler... Mitten im Script wurde die Fehlerbehandlung ausgeschaltet...

Durch den Eintrag PHP Parse error: syntax error, unexpected $end in bin ich auf folgenden, gekürzten Code gestoßen:

$imgtype="!(ImageTypes() & IMG_GIF" .  ")";  
if ((eval($imgtype)){

Ein kleines Unscheinbares ; was fehlte... In Summe hab ich 4 Fehler behoben, die unter der alten Serverkonfiguration zu keinem Fehler sondern zu Status 200 geführt haben.

Es läuft, es läuft!!

Danke an alle, die geholfen haben!!