Langsam kloppen sich die Teile um die erste Stelle, denn "session_start()" muss ja auch ganz am Anfang stehen.
Muss es nicht. Auf jeden Fall - und darauf deutet Deine Beschreibung hin - muss ob_start();
in Deinem Fall vor die erste Ausgabe und session_start();
vor die erste Benutzung von $_SESSION
und auch vor der ersten Ausgabe von Payload (z.B. HTML) erfolgen, weil session_start();
ein Cookie erzeugt, welches - „OHA!“ - das Senden einer Headerzeile nach sich zieht. ob_start();
kann also vor session_start();
stehen. Man muss wissen, was was, dieses sodann „wie, wann und warum“ macht.