Ankündigung

Einklappen
Keine Ankündigung bisher.

Identisches Script auf zwei verschiedenen Servern: Einmal Fehlerausgabe?!

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Identisches Script auf zwei verschiedenen Servern: Einmal Fehlerausgabe?!

    Ich hab da mal ein Problem, dass ich mir nicht so richtig erklären kann.

    Ich habe ein Kontaktformular geschrieben, dass auch weitestgehend auf allen getesteten Servern einwandfrei funktioklappt hat.

    Mit Ausnahme einer einzigen Funktion:
    Setzen eines Zeitsperre-Cookies zum Floodschutz.

    Auf meinem eigenen Server gibt es keine Fehlermeldung und der Cookie wird auch einwandfrei gesetzt.
    http://www.space-vampire.de/main/mod...takt/index.php
    Alles prima. Keine Fehler.

    Auf dem Server meiner freundin jedoch, gibt wird die Mail vorschriftsmäßig abgesendet...aber der Cookie nicht gesetzt!
    http://www.dienane.de/kreativdeko/svkontakt/index.php
    Es erscheint folgende Fehlermeldung:
    Code:
    Warning: Cannot modify header information - headers already sent by (output started at /var/www/web89/html/kreativdeko/svkontakt/index.php:95) in /var/www/web89/html/kreativdeko/svkontakt/send.php on line 87
    Da das script samt aller Einstellungen absolut identisch auf beiden Servern ist, frag ich mich, ob das an der PHP-Konfiguration auf dem Server liegen könnte?
    Wenn ja: wie kann man dem entgegenwirken?

    Nachfolgend die Passagen aus index.php und send.php, bei deren Auswertung der Fehler auftritt.
    Die send.php wird in die index.php included

    Zeile 95 der index.php
    PHP-Code:
        echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'
    Zeile 87 der send.php
    PHP-Code:
    setcookie("svkontakt""svkontakt"time()+(60*$flood)); 
    Jemand ne Idee, warum das auf einem Server geht und auf einem anderen nicht?
    Und wenn ja: Was kann ich tun, damit es immer funktioniert?

  • Space Vampire
    antwortet
    Danke

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    Nein.

    Einen Kommentar schreiben:


  • Space Vampire
    antwortet
    Löst mein Problem...fürs nächste Script. Beantwortet aber nicht die zuletzt gestellte Frage...für das bestehende Script, dass ich nicht noch mal komplett umschreiben möchte!

    Vielleicht sollte ich die Frage etwas verkürzen?
    Ist es möglich den output_buffer per codezeile ähnlich wie
    PHP-Code:
    ini_set ('error_reporting'E_ALL); 
    direkt im script einzuschalten? Ja oder nein?
    Falls "Ja": wie sähe die entsprechende codezeile aus?

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    Und was hast du unter Kontrolle? Dein Script.
    Und damit wären wir wieder beim Stichwort EVA-Prinzip ...

    Einen Kommentar schreiben:


  • Space Vampire
    antwortet
    wie ich aber bereits schrieb, wäre die .htacces-lösung eher unbefriedigend, da sie sich nicht bei allen servern unter meinem einfluss befindet

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    Dass man die Option per htaccess setzen kann, ist auf der Seite beschrieben - wenn du auch mal den weiterführenden Links folgst.

    Einen Kommentar schreiben:


  • Space Vampire
    antwortet
    Ok, ich versuch es mal so zu erklären.
    Ich bin tatsächlich noch PHP-Anfänger, und so einiges erschließt sich mir nicht sofort.

    Ich kenne die Beeinflussung der Server-Konfiguration bisher nur durch das verändern der Genauigkeit der fehlerausgabe.
    Ich weiß, dass man, sofern man den nötigen Zugriff hat, das gleich auf dem server einstellen kann.
    Ich weiß auch, dass man das via .htaccess machen kann.
    Außerdem weiß ich, dass man, zumindest bei der Felerausgabe, auch per String direkt im Script machen kann.

    Die ersten beiden Möglichkeiten unterliegen nicht meinem Einfluss!
    Die dritte Möglichkeit würde sich zwar nur auf die angezeigte Seite beschränken, würde aber für meine Zwecke vollkommen ausreichen.

    Was ich brauche ist also eine Befehlszeile ähnlich wie diese hier
    PHP-Code:
    ini_set ('error_reporting'E_ALL); 
    die es mir ermöglicht output_buffering einzuschalten

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    Und ich verstehe nicht, was du in diesem Zusammenhang mit der Kommandozeile willst.

    Einen Kommentar schreiben:


  • Space Vampire
    antwortet
    Ja, und genau da im Handbuch häng ich gerade
    ich raff nicht so ganz, wie ich das in einer Kommandozeile ausdrücken soll.

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    Zitat von Space Vampire Beitrag anzeigen
    ok das erklärts, aber hilft mir nur begrenzt weiter.
    weil spätestens, wenn ich das kontaktformular in eine bestehende seite include sind fehler dieser art vorprogrammiert.
    Nur, wenn du dich nicht ans EVA-Prinzip hältst.

    gibt es evtl eine möglichkeit diesen unterschied in der verarbeitungsart per befehlszeile für diese seite zu ändern?
    http://www.php.net/manual/en/outcont...figuration.php

    Einen Kommentar schreiben:


  • Space Vampire
    antwortet
    ok das erklärts, aber hilft mir nur begrenzt weiter.
    weil spätestens, wenn ich das kontaktformular in eine bestehende seite include sind fehler dieser art vorprogrammiert.
    gibt es evtl eine möglichkeit diesen unterschied in der verarbeitungsart per befehlszeile für diese seite zu ändern?
    also ähnlich, wie man im script angeben kann, wie genau die fehleranzeige sein soll.

    Einen Kommentar schreiben:


  • Dark Guardian
    antwortet
    Zitat von Space Vampire Beitrag anzeigen
    Jemand ne Idee, warum das auf einem Server geht und auf einem anderen nicht?
    Serverseitiges Output Buffering. Server A sammelt erst allen Output und sendet ihn dann, Server B feuert alles was du via echo, print etc. ausgibst direkt raus und sendet somit bereits bei der ersten Teilausgabe die HTTP Header.

    Zitat von Space Vampire Beitrag anzeigen
    Und wenn ja: Was kann ich tun, damit es immer funktioniert?
    Vor Header Modifikationen niemals eine Ausgabe machen bzw. sich an das EVA-Prinzip halten.

    Und das setzen eines Cookies passiert nun einmal über die HTTP-Response Header...

    Einen Kommentar schreiben:

Lädt...
X