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?


  • #2
    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...
    "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

    Kommentar


    • #3
      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.

      Kommentar


      • #4
        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

        Kommentar


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

          Kommentar


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

            Kommentar


            • #7
              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

              Kommentar


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

                Kommentar


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

                  Kommentar


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

                    Kommentar


                    • #11
                      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?

                      Kommentar


                      • #12
                        Nein.

                        Kommentar


                        • #13
                          Danke

                          Kommentar

                          Lädt...
                          X