Matze: Header alrdy sent - nicht von mir

Hallo!

Ich habe gerade festgestellt, dass eine Seite von mir nicht mehr so läuft wie bisher.
Da es bislang keine Probleme gab, geh ich von einer Änderung der Serverkonfiguration aus.
Jetzt würde ich den Fehler gern eingrenzen um den Serveradmin bitten zu können den einen konkreten Punkt wieder rückgängig zu machen.

Das Problem ist ein
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (...:1) ....php on line 2

Line 1 und 2 sind aber nur <?PHP und session_start();

Eine andere Datei fängt so an und funktioniert einwandfrei:

<?PHP  
function checksubmit($var1, $var2){  
    if(empty($var1) && empty($var2)){ return false;  
    }elseif(!empty($var1) && !is_numeric($var1)){ return false;  
    }elseif(!empty($var2) && !is_numeric($var2)){ return false;  
    }else{ return true;}}  
session_start();

Kann mir bitte jemand helfen herauszufinden woran es liegt und wieso der Fehler in Datei X auftritt und in Datei Y nicht?

Fehlerreproduktion geht indem ich einfach eine Datei mit folgendem Inhalt erstelle: <?PHP session_start(); ?>

Ein JSON-Header einer anderen Datei bringt den selben Fehler:
header('Content-type:text/json; charset=utf-8');

Könnte es etwas mit UTF-8 und BOM zu tun haben?
Einschlägige Hinweise der Art "" konnte ich nicht finden.

Danke für Eure Hilfe!

Grüße, Matze

  1. echo $begrüßung;

    Könnte es etwas mit UTF-8 und BOM zu tun haben?
    Einschlägige Hinweise der Art "" konnte ich nicht finden.

    Auch die BOM ist eine Ausgabe, eine nicht notwendige noch dazu.

    echo "$verabschiedung $name";

    1. Hallo dedlfix!

      Könnte es etwas mit UTF-8 und BOM zu tun haben?
      Einschlägige Hinweise der Art "" konnte ich nicht finden.

      Auch die BOM ist eine Ausgabe, eine nicht notwendige noch dazu.

      Was willst du mir damit sagen?
      Ich habe nichts verändert an der Art wie ich meine Dokumente speichere.

      Jetzt habe ich mit Notepad leere Textdateien erstellt und den Inhalt der betroffenen Dateien rein kopiert, die Originaldatei gelöscht und die Textdatei in den Namen der Originaldatei umbenannt. Anschließend hochgeladen und siehe da, es geht wieder.

      Fast, denn die Umlaute und Sonderzeichen die nicht aus dem JSON kommen werden jetzt nicht mehr dargestellt sondern durch ein Zeichen ersetzt. Logisch, denn Notepad speichert nicht utf-8.

      Was mach ich denn jetzt nur, damit ich wieder meine Umlaute und trotzdem utf-8 hab? Oder hab ich jetzt utf-8? Ich blick irgendwie nicht mehr durch.

      Danke und Grüße, Matze

      1. echo $begrüßung;

        Auch die BOM ist eine Ausgabe, eine nicht notwendige noch dazu.
        Was willst du mir damit sagen?

        Alles was vor einem <?php steht wird von PHP an den Webserver durchgereicht und ist damit eine Ausgabe. Die BOM macht dabei keine Ausnahme.

        Fast, denn die Umlaute und Sonderzeichen die nicht aus dem JSON kommen werden jetzt nicht mehr dargestellt sondern durch ein Zeichen ersetzt. Logisch, denn Notepad speichert nicht utf-8.

        Doch, das macht er, wenn man ihn im Speichern-Dialog darum bittet. Leider macht er es nur mit BOM.

        Was mach ich denn jetzt nur, damit ich wieder meine Umlaute und trotzdem utf-8 hab?

        Verwende einen anderen UTF-8-fähigen Editor, bei dem die BOM (weg)konfiguriert werden kann.

        echo "$verabschiedung $name";

        1. Hallo dedlfix!

          Was mach ich denn jetzt nur, damit ich wieder meine Umlaute und trotzdem utf-8 hab?

          Verwende einen anderen UTF-8-fähigen Editor, bei dem die BOM (weg)konfiguriert werden kann.

          Ok dann hab ich mich beim Notepad geirrt.
          Nur wieso geht es wenn Notepad BOM speichert trotzdem?
          Eigentlich müsste doch eine mit Notepad gespeicherte Datei mit dem Inhalt <?PHP session_start(); ?> jetzt den Fehler produzieren oder? Tut sie aber nicht.
          Schlussfolgerung wäre doch eigentlich gewesen:
          Notepad speichert BOM -> BOM wird vor session_start() gesendet -> Header already sent Fehler
          Oder versteh ich grad etwas falsch?

          Also ich benutze standardmässig den Dreamweaver.
          Das hat berufliche Gründe und ich hab die Layoutansicht von dem Ding noch nie gesehn, also nicht gleich auf mich einschlagen ;) Wie der speichert weiß ich allerdings, zugegeben, nicht. Mal schaun ob ich irgendwo einen Hinweis darauf finde.

          Könntest du mir einen Editor vorschlagen?

          Das mit dem BOM ist mir schon klar, und war ja auch meine erste Vermutung aber wie gesagt, trat das Problem erst seit kurzem auf. Es muss also an der Serverkonfiguration etwas verändert wurden sein. Nur was?
          An der Art wie ich meine Dokumente speichere hab ich ja nichts verändert.

          Danke und Grüße, Matze

          1. Hi,

            Nur wieso geht es wenn Notepad BOM speichert trotzdem?

            Weil du *nicht* in UTF-8 gespeichert hast - deshalb hast du ja jetzt aktuell ein Sonderzeichen-Problem - deswegen hat Notepad auch keine BOM davor gesetzt, weil die etwas Unicode-spezifisches ist, und bei anderen Kodierungen nichts zu suchen hat.

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
            1. Hallo ChrisB!

              Nur wieso geht es wenn Notepad BOM speichert trotzdem?

              Weil du *nicht* in UTF-8 gespeichert hast - deshalb hast du ja jetzt aktuell ein Sonderzeichen-Problem - deswegen hat Notepad auch keine BOM davor gesetzt, weil die etwas Unicode-spezifisches ist, und bei anderen Kodierungen nichts zu suchen hat.

              Oh stimmt, hab ich ganz vergessen. Einfach mal als ANSI kodiert...^^
              Ok, dann weiß ich jetzt also, dass mein Dreamweaver auch BOM speichert. Sowas aber auch.

              Dann bleiben immernoch 3 Fragen.
              Wieso ging es bislang?
              Was wurde an der Serverkonfiguration verändert, dass jetzt der Fehler auftritt und vorher übergangen wurde?

              Und die wichtigste Frage:
              Könnt ihr mir bitte einen Freeware Editor für Windows empfehlen der utf-8 speichern kann und das lästige BOM ebend weglässt?

              Danke und Grüße, Matze

              1. Hi,

                Dann bleiben immernoch 3 Fragen.
                Wieso ging es bislang?
                Was wurde an der Serverkonfiguration verändert, dass jetzt der Fehler auftritt und vorher übergangen wurde?

                Vermutlich war output_buffering bislang angeschaltet.

                Und die wichtigste Frage:
                Könnt ihr mir bitte einen Freeware Editor für Windows empfehlen der utf-8 speichern kann und das lästige BOM ebend weglässt?

                NotePad++ beispielsweise.

                MfG ChrisB

                --
                „This is the author's opinion, not necessarily that of Starbucks.“
                1. Hallo ChrisB!

                  Dann bleiben immernoch 3 Fragen.
                  Wieso ging es bislang?
                  Was wurde an der Serverkonfiguration verändert, dass jetzt der Fehler auftritt und vorher übergangen wurde?

                  Vermutlich war output_buffering bislang angeschaltet.

                  Könnt ihr mir bitte einen Freeware Editor für Windows empfehlen der utf-8 speichern kann und das lästige BOM ebend weglässt?

                  NotePad++ beispielsweise.

                  Herzlichen Dank! Alles was ich wissen wollte in 2 Sätzen beantwortet. Gibt ein Bienchen! ;D

                  Danke und schöne Feiertage wünsche ich noch!

                  Matze