PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP-Installation: Seltsame Anzeige "content-type..." auf jeder Seite


Jörg
29.06.2002, 19:08:49
Nach der Installation von PHP auf einem Server funktioniert die Ausführung der Skripte problemlos.

Allerdings wird auf jeder Seite dieses als Text ausgegeben:

content-type: text/html

In den PHP-Dateien selbst steht das nicht, ich habe schon alle .inf- und .conf-Dateien auf dem Server nach Hinweisen durchsucht ohne die Ursache zu finden.

Kann jemand helfen?

Danke und Gruss,
Jörg

|Coding
29.06.2002, 19:43:38
hi,

ich denke mal das dies eine einstellung der php.ini ist, schau mal ob du darin was findest.

markus.thiede
30.06.2002, 16:36:49
Das kenn ich noch aus der Zeit in der ich CGIs mit C und Perl bastelte da mußte diese Zeile immer ganz als erste kommen gefolgt von 2 Leerzeilen aber wehe man hat eine oder 3 Leerzeilen genommen dann wurde entweder nichts angezeigt oder die Dämliche Content zeile mit angezeigt.

Einige funktionen zum beispiel GD müssen müssen ausgefüht werden bevor das Script irgend etwas ausgibt sonst kommt es auch zu solchem unsinn.

markus.thiede
01.07.2002, 18:15:34
Wenn man CGI mit C Programmiert muß die erste anweisung immer printf("Content-type: text/html

");
heissen bevor man etwas ausgibt.
Bsp:

int main (void)
{
printf("Content-type: text/html

");
printf("<HTML>
";
...
printf("</HTML>");
}

(An den drei punkte steht natürlich quelltext.)
PHP gibt diese Zeile selbst aus man braucht sie also nicht ins Script zu schreiben.


Wenn man jetzt aber eine Funktion benutzt die Keinen HTML text ausgibt sonder etwas anderes Beispielsweise GD ist eine zeichenfunktion und gibt PNG bilder aus. Muß diese ausgabe ganz als erstes erfolgen da es sonst zu solchen Fehlern kommen kann.
Ein weiterer möglicher fehler ist das nach der Content-type Zeile ein '
'(Neue Zeile Zeichen) zu viel oder zu
wenig ist.

Matt
01.07.2002, 18:33:27
er selbst will das ja gar nicht ausgeben, sondern php gibt es automatisch aus, allerdings nicht als header, sondern schickt es als normalen text an den browser.
wenn du gd benutzt schickst du den header mit dem typ img/png zum beispiel. wenn du selbst einen content type definierst, wird dieser geschickt, wenn nicht, wird ein default geschickt.
bitte schreib mal genau, wie du php installiert hast!

Jörg
01.07.2002, 18:53:08
Original geschrieben von Matt
er selbst will das ja gar nicht ausgeben, sondern php gibt es automatisch aus, allerdings nicht als header, sondern schickt es als normalen text an den browser.
Genauso isses.
:)
bitte schreib mal genau, wie du php installiert hast!

Tja, leider hat das unser Rechenzentrum eingerichtet. Ich weiss nur, dass PHP nicht als Apache-Modul (wie auf unserem Hausserver) sondern als CGI-Version eingebaut ist, obwohl darunter wohl die Performance leiden soll.
Eine Fehlersuche seitens des Zustaendigen verlief negativ, deshalb versuche ichs hier auf eigene Faust...

Ihr koennt euch das mit der "Content"-Zeile gerne ansehen, z.B. hier:
http://www.biss.belwue.de/test/le_email_erfassung.php

Wuerde ein Auszug aus dem Ergebnis von "phpinfo()" weiterhelfen?

Danke uebrigens fuer die bisherigen Ideen.

Gruss,
Joerg

markus.thiede
01.07.2002, 19:39:41
Hmm...

Sorry aber da bin ich am ende mit meinem Latein.

Matt
02.07.2002, 10:59:13
ich bin mir mit meiner theorie zu der bat datei jetzt ziemlich sicher, wir müssten eine möglichkeit finden, dass der standard-content-type geschickt wird. hau mal in die erste zeile von deinem script (und ich meine die ALLER erste zeile von der datei)
header("content-type: text/html");
und schau, was passiert.

Jörg
02.07.2002, 12:00:32
Original geschrieben von Matt
ich bin mir mit meiner theorie zu der bat datei jetzt ziemlich sicher, wir müssten eine möglichkeit finden, dass der standard-content-type geschickt wird. hau mal in die erste zeile von deinem script (und ich meine die ALLER erste zeile von der datei)
header("content-type: text/html");
und schau, was passiert.
Ich habe jetzt in der allerersten Zeile des PHP-Skripts die Zeile
header("content-type: text/html");
eingefuegt.
Jetzt steht auf der aufgerufenen Seite:
Content-type: text/html header("content-type: text/html");

Wenn ich uebrigens eine PHP-Seite auf dem Server aufrufe, die es gar nicht gibt, so erscheint auch auf der resultierenden leeren Seite oben links der *'"§/%/"§/&_:;'*-String.
:-(

Gruss und Danke
Joerg

Matt
02.07.2002, 12:28:03
war natürlich so gemeint:
<?
header(...)
?>
es darf nur keine ausgabe von zeichen davor erfolgen...

Jörg
02.07.2002, 12:39:51
Original geschrieben von Matt
war natürlich so gemeint:
<?
header(...)
?>
es darf nur keine ausgabe von zeichen davor erfolgen...
Ich gebs ja zu: bin blutiger Anfaenger ;-)

Aber leider: der String wird weiterhin ausgegeben.


Joerg

Matt
02.07.2002, 12:47:06
dann bitte tu das mal in dein script rein, un sag mir, was ausgegeben wird, das hier zeigt dir alle header an, die geschickt worden sind, denn es scheint da einer zu viel zu sein.

$headers = getallheaders();
while (list ($header, $value) = each ($headers)) {
echo "$header: $value<br />
";
}

Jörg
02.07.2002, 13:16:22
Original geschrieben von Matt
dann bitte tu das mal in dein script rein, un sag mir, was ausgegeben wird, das hier zeigt dir alle header an, die geschickt worden sind, denn es scheint da einer zu viel zu sein.

getallheaders() funktioniert nur bei PHP als APACHE-Modul.
Hilft vielleicht auch ein Auszug aus phpinfo() ?

Matt
02.07.2002, 13:39:15
nein, weil ich will wissen, ob sich zwei header überschneiden bzw. in welcher reihenfolge welche wie gesendet wurden.
nunja. kannst du uns mal dein script posten?

Jörg
02.07.2002, 14:18:31
Original geschrieben von Matt
nein, weil ich will wissen, ob sich zwei header überschneiden bzw. in welcher reihenfolge welche wie gesendet wurden.
nunja. kannst du uns mal dein script posten?
Der Effekt tritt bei jedem Skript auf, also auch bei z.B.

<?
phpinfo()
?>

, auch, wenn gar keine Datei vorhanden ist.
Rufe ich
http://www.biss.belwue.de/test/irgendein-unsinn.php
auf, so kriege ich eine leere Seite mit dem String.

Gruss,
Joerg

Matt
02.07.2002, 14:29:15
das find ich echt interessant. da hat dein admin ziemlich sicher irgend einen müll mit dem php interpreter gedreht, weil normalerweise sollte der server melden, dass das script nicht gefunden worden ist.
ich hab das gefühlt, dass etwas vor deine datei gestellt wird, bevor die header gesendet werden, deshalb sind diese auch nicht mehr als header zu erkennen, und es würde vielleicht auch erklären, warum nicht vorhandene dateien interpretiert werden.

Jörg
02.07.2002, 15:40:11
Original geschrieben von Matt
das find ich echt interessant. da hat dein admin ziemlich sicher irgend einen müll mit dem php interpreter gedreht, weil normalerweise sollte der server melden, dass das script nicht gefunden worden ist.
ich hab das gefühlt, dass etwas vor deine datei gestellt wird, bevor die header gesendet werden, deshalb sind diese auch nicht mehr als header zu erkennen, und es würde vielleicht auch erklären, warum nicht vorhandene dateien interpretiert werden.
ICh werde nochmal mit unserem Admin Kontakt aufnehmen und ein wenig zu dem Thema nachbohren.
Danke erstmal fuer Deine Hilfe.

Gruss,
Joerg