Timo Steiner: PHP session-problem nach serverwechsel

Hallo.
Ich habe auf einem kostenlosen Server im Netz eine Page geuppt, welche nur aus php-seiten besteht.
Nun hab ich mir nen (vernünftigen) kostenpflichtigen Server zugelegt.
Habe die Pages von dem alten Server uebernommen.

Einige Sachen wie die Datenbank muessen natuerlich angepasst werden,
aber...
ich bekomme bei session_start immer diese Meldung

Warning: session_register() [function.session-register]: Cannot send session cookie - headers already sent by (output started at /home/www/htdocs/mutantmaker.de/index.php:7) in /home/www/htdocs/mutantmaker.de/index.php on line 7

Warning: session_register() [function.session-register]: Cannot send session cache limiter - headers already sent (output started at /home/www/htdocs/mutantmaker.de/index.php:7) in /home/www/htdocs/mutantmaker.de/index.php on line 7

Wodurch dieser Fehler normal erzeugt wird habe ich im Netz
nachgelesen und eine Test-Index.php erstellt, in welcher NUR der seesion_start()-Befehl aufgerufen wird.
Dennoch bekomme ich die Fehlermeldung

Warum geht das auf dem neuen Server nicht obwohl se einwandfrei auf dem alten lief?

Bitte helft mir weiter.

Gruß Timo

  1. Oben steht session_register() macht aber keinen Unterschied denke ich.
    Gibt bei beidem den gleichen Fehler aus

  2. Hallo

    Zum einen ist session_Registert() nicht mehr zwingend notwendig. Du hast die Superglobal $_SESSION. Zum anderen wurde das schon etliche male hier behandelt. Deswegen hat dsa Forum eine tolle Suche. Und es wurde gar so oft gefragt, dass es in die FAQs aufgenommen wude:
    28.12. Warning: Cannot send session cookie - headers already sent ...
    http://www.dclp-faq.de/q/q-fehler-session-cookie.html

    Grüße

    David

    --
    "Nobody will ever need more than 640k RAM!"
    1981 Bill Gates
    1. Ich weiß aber das hilft mir leider nicht weiter.
      Wie gesagt ich hatte ja vorher mirt genau den gleichen Dateien keine Probleme.

      Meine Test Datei sieht so aus

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      <head>
      <title>Unbenanntes Dokument</title>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      </head>
      <body><?php session_start(); ?>
      </body>
      </html>

      Ich finde keinen Fehler..

      1. Hallo

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        <html>
        <head>
        <title>Unbenanntes Dokument</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        </head>
        <body>

        Das ist der Fehler....
        Du darfst _keine_ Ausgabe mit HTML machen bevor du eine Session startest. das sessionstart() gehört noch vor das DOCTYPE...
        Merkwürdig warum es beim alten ohne Probleme funktioniert hat...

        Grüße

        David

        --
        "Nobody will ever need more than 640k RAM!"
        1981 Bill Gates
        1. Merkwürdig warum es beim alten ohne Probleme funktioniert hat...

          Schein an Einstellungen in der php.ini zu liegen. Auf meiner Kiste funzt es unter Windows auch, beim Serverbetreiber nicht... Wenn man dann mal vergessen hat eine Testausgabe abzuschalten und ein header("Location:...) sendet, dann gibts auf dem Webserver "plötzlich" Probleme. Die Browser verarbeiten das übrigens anstandslos...

          fastix®

        2. Moin!

          Merkwürdig warum es beim alten ohne Probleme funktioniert hat...

          Man kann die Seitenausgabe puffern. Dann werden logischerweise auch die Header gepuffert und auch dann noch nicht zum Browser gesendet, wenn schon HTML begonnen wird (oder sonst eine Ausgabe). Das erlaubt, jederzeit noch header() hinzuzufügen.

          Ich weiß nicht, welche Nachteile diese Vorgehensweise hat. Spontan fällt mir nur der Speicherbedarf ein, der zusätzlich für den Puffer anfällt.

          - Sven Rautenberg

          --
          Signatur oder nicht Signatur - das ist hier die Frage!
          1. Also ich hab das mal mit dem session_start() ein bisschen hin und hersgeschoben.
            Hab aber leider keine Position gefunden, wo der Fehler nicht kommt und ich auf dem testlink eine SessionID habe.

            Einer der vielen Versuche:

            <html>
            <?php session_start();?>
            <head>
            <title>Unbenanntes Dokument</title>
            </head>
            <body>
            <a href="News.php" target="_parent">news</a>
            </body>
            </html>

            Und warum steht in der Fehlermeldung zweimal die gleiche Zeile ?

            Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/www/htdocs/mutantmaker.de/index.php:3) in /home/www/htdocs/mutantmaker.de/index.php on line 3
            news

            1. Hallo

              <?php session_start();?>

              <html>

              Dann sollte es klappen. Pass auf, dass du keine Whitespaces hast.
              Es sei denn, wie gesagt, du Bufferst das Ganze. Davon gehe ich angesichts eines Codes allerdings nicht aus.

              Grüße

              David

              --
              "Nobody will ever need more than 640k RAM!"
              1981 Bill Gates