/

liegt vermutlich an der ausgabe, daher die funktionen hier verinnerlichen und nach sinn einsätzen.

header-Informationen sind immer vor jeglichem anderen Inhalt
zu senden.
Wenn du die header-Information für die Sitzung also vor der
Ausgabe von Inhalt sendest, sollte die Meldung nicht erscheinen.

Man beachte, daß auch Leerzeilen und -zeichen vor dem
PHP-Bereich eine Ausgabe darstellen.
Kommt öfter vor, daß man versehentlich Inhalt (Leerzeichen)
produziert, muß man dann drauf achten, wenn man auch solche
Metainformation im header senden will.

Die genannten Funktionen braucht man nur, um die Ausgabe
in den Speicher zu schreiben. Wirkt unter Umständen auch
dann nicht, wenn man schon eine Ausgabe hatte, dann erst
die folgenden Ausgabe in den Speicher schreibt, dann einen
header senden will und dann nur die gespeicherte Ausgabe.
Die Funktionen sind vor allem schön, wenn man die Ausgabe
komprimieren will. Wenn man sein PHP-Skript sinnvoll strukutiert
hat, braucht man die ansonsten eher selten.

Die sendest du - in diesem Falle - gar nicht.
session_start versucht, wenn nicht anders konfiguriert, einen Cookie mit der Session-ID zu setzen. Und Cookies werden innerhalb der HTTP-Header übertragen.

Trotzdem hat dieses „Problem“ einen ultralangen Bart.
Und auch das Manual weist in der Beschreibung zu session_start deutlich auf den Sachverhalt hin - dort nachzulesen, sollte auch einem „Noob“ möglich sein.

Wenn du - laut Meldung - session_start auf Zeile 2 stehen hast und der Output in Zeile 1 statt fand (wo also vermutlich <?php steht) - dann hast du entweder davor noch ein Leerzeichen, oder aber die BOM, die dein Editor beim Speichern von Dokumenten als UTF-8 davor setzt, spielt dir einen Streich. (Wenn letzteres, dann gewöhne deinem Editor ab, diese zu setzen.)