Badboy46: session.save_path in php-Script ändern

Hallo,

folgende Zeilen hab ich in meiner Config Datei

===============================================
define ('_PATH', dirname($_SERVER['PATH_TRANSLATED']).'/'); // Verzeichnis
ini_set('session.save_path', _PATH.'/tmp/');

die Config wird als erstes per require_once eingebunden
danach wird auf gleicher weise auch AUTH eingebunden

kann mir einer sagen, warum die Session Dateien nicht in den Ordner gespeichert werden?

Der Ordner hat CHMOD = 777
PHP läuft als CGI Version
PHP Version: 4.3.7
Apache 1.3.31

  1. Hello,

    folgende Zeilen hab ich in meiner Config Datei

    In einer Config-Datei oder im Script?

    ===============================================
    define ('_PATH', dirname($_SERVER['PATH_TRANSLATED']).'/'); // Verzeichnis
    ini_set('session.save_path', _PATH.'/tmp/');

    die Config wird als erstes per require_once eingebunden
    danach wird auf gleicher weise auch AUTH eingebunden

    kann mir einer sagen, warum die Session Dateien nicht in den Ordner gespeichert werden?

    Der Ordner hat CHMOD = 777
    PHP läuft als CGI Version
    PHP Version: 4.3.7
    Apache 1.3.31

    Wann wird die Session gestartet?
    warum benutzt Du nicht http://de.php.net/manual/de/function.session-save-path.php

    Außerdem hat Dein resultierender Save-Path zwei Slashes in der Mitte. Das rüfte aber eigentlich nicht der Grund sein.

    Wenn der GC funktionieren soll, darf der Save-Path angeblich nicht mehr als zwei Ebenen haben.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hello,

      folgende Zeilen hab ich in meiner Config Datei

      In einer Config-Datei oder im Script?

      Config Datei = php-Script

      ===============================================
      define ('_PATH', dirname($_SERVER['PATH_TRANSLATED']).'/'); // Verzeichnis
      ini_set('session.save_path', _PATH.'/tmp/');

      die Config wird als erstes per require_once eingebunden
      danach wird auf gleicher weise auch AUTH eingebunden

      kann mir einer sagen, warum die Session Dateien nicht in den Ordner gespeichert werden?

      Der Ordner hat CHMOD = 777
      PHP läuft als CGI Version
      PHP Version: 4.3.7
      Apache 1.3.31

      Wann wird die Session gestartet?
      warum benutzt Du nicht http://de.php.net/manual/de/function.session-save-path.php

      Außerdem hat Dein resultierender Save-Path zwei Slashes in der Mitte. Das rüfte aber eigentlich nicht der Grund sein.

      ich hab es jetzt mal direkt so probiert
      session_save_path('/home/xxx/www.xxx.de/auth/tmp/');

      er ignoriert es einfach

      Wenn der GC funktionieren soll, darf der Save-Path angeblich nicht mehr als zwei Ebenen haben.

      was meinst du damit?
      ich versteh das nicht so wirklich ;-)

      1. Hello,

        ===============================================
        define ('_PATH', dirname($_SERVER['PATH_TRANSLATED']).'/'); // Verzeichnis
        ini_set('session.save_path', _PATH.'/tmp/');

        die Config wird als erstes per require_once eingebunden
        danach wird auf gleicher weise auch AUTH eingebunden

        kann mir einer sagen, warum die Session Dateien nicht in den Ordner gespeichert werden?

        Der Ordner hat CHMOD = 777
        PHP läuft als CGI Version
        PHP Version: 4.3.7
        Apache 1.3.31

        Wann wird die Session gestartet?

        ich hab es jetzt mal direkt so probiert
        session_save_path('/home/xxx/www.xxx.de/auth/tmp/');

        er ignoriert es einfach

        Was heißt das? Hast Du mal mit der Konsole im Verzeichnis nachgeschaut, ob eine Datei

        sess_abcdef1234567890abcdef1234567890

        im Verzeichnis angelegt wird, wenn Du ein simples Script mit

        <?php   #### session_start.php ####

        echo "alter Session-Path: ".session_save_path('/home/xxx/www.xxx.de/auth/tmp/')."<br />\n";
        echo "neuer Session-Path: ".session_save_path()."<br />\n"
        session_start();
        echo "Session-ID: ".session_id();

        ?>

        laufen lässt?

        Läuft der Safe_Mode?
        Ist der Save-Path irgendwo schon mit php_Admin_Value gesetzt worden?
        Kannst Du ihn nicht mal testhalber in der der php.ini setzen?

        Wichtig ist, dass die Session NACH dem Setzen des Pfades gestartet wird.

        Wenn der GC funktionieren soll, darf der Save-Path angeblich nicht mehr als zwei Ebenen haben.

        was meinst du damit?

        Dar Garbage Controller ist der "Lumpensammler" für abgelaufene Sessions und der wird nur tätig, wenn man den Pfad maximal 2 Ebenen tief macht (laut Doku) also /home/Sessions_paul/
        Deiner hat 5 Ebenen.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hallo

          ===============================================
          define ('_PATH', dirname($_SERVER['PATH_TRANSLATED']).'/'); // Verzeichnis
          ini_set('session.save_path', _PATH.'/tmp/');

          die Config wird als erstes per require_once eingebunden
          danach wird auf gleicher weise auch AUTH eingebunden

          kann mir einer sagen, warum die Session Dateien nicht in den Ordner gespeichert werden?

          Der Ordner hat CHMOD = 777
          PHP läuft als CGI Version
          PHP Version: 4.3.7
          Apache 1.3.31

          Wann wird die Session gestartet?

          vorher...
          da hätte ich auch selber drauf kommen können :-(

          ich hab es jetzt mal direkt so probiert
          session_save_path('/home/xxx/www.xxx.de/auth/tmp/');

          er ignoriert es einfach
          Was heißt das? Hast Du mal mit der Konsole im Verzeichnis nachgeschaut, ob eine Datei

          sess_abcdef1234567890abcdef1234567890

          ja, ich hatte erst per FTP geschaut dann per Console
          der Ordner war schön leer
          jetzt nachdem ich das geändert habe, läuft das auch

          Wenn der GC funktionieren soll, darf der Save-Path angeblich nicht mehr als zwei Ebenen haben.

          was meinst du damit?

          Dar Garbage Controller ist der "Lumpensammler" für abgelaufene Sessions und der wird nur tätig, wenn man den Pfad maximal 2 Ebenen tief macht (laut Doku) also /home/Sessions_paul/
          Deiner hat 5 Ebenen.

          heisst das jetzt also
          das sich der Ordner zumüllt?

          1. Hello,

            Wann wird die Session gestartet?

            vorher...
            da hätte ich auch selber drauf kommen können :-(

            Naja, aber erst, wenn man das Konzept verstanden hat. Sowas dauert eben ;-) Also keine Panik!
            Ich habe damals mit meinem Team zusammen auch 14 Tage gebraucht, alles zu verstehen, auszuprobieren und zu dokumentieren. Die Doku war damals auch noch nicht so üppig wie heute; kaum UCNs

            jetzt nachdem ich das geändert habe, läuft das auch

            Dar Garbage Controller ist der "Lumpensammler" für abgelaufene Sessions und der wird nur tätig, wenn man den Pfad maximal 2 Ebenen tief macht (laut Doku) also /home/Sessions_paul/
            Deiner hat 5 Ebenen.

            heisst das jetzt also
            das sich der Ordner zumüllt?

            Das würde ich mal im Auge behalten. Stelle doch in der INI mal session.max_lifetime auf einen kurzen Wert von z.B 30sec also 30. Vergiss nicht, den Apachen neu zu starten.

            Und dann greif mit verschiedenen Clients (bei Windows benötigt man dafür entweder mehrere Rechner oder unterschiedliche Browser) auf diese Testdatei zu. Schau dir das Wachstum der Dateien im Verzeichnis an. Wenn Du feststellst, dass es einfach immer mehr werden, dann liegt das an dem bezeichneten Problem des GC. Er will das Verzeichnis dann nicht mehr verarbeiten.

            Der GC scannt übrigens nur das Verzeichnis nach allen Dateien, die mit 'sess_' anfangen. Wenn man ihm das verbietet, indem man dem Parser die Browse-Rechte (R) für das Verzeichnis entzieht, dann bleiben die Dateien auch erhalten. Ich nutze das aktiv, da meine User immer Ihre Session wiederbekommen, aber dafür einen zusätzlichen Cookie für den Zugriff darauf erhalten.

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Hallo

              Wann wird die Session gestartet?

              vorher...
              da hätte ich auch selber drauf kommen können :-(

              Naja, aber erst, wenn man das Konzept verstanden hat. Sowas dauert eben ;-) Also keine Panik!
              Ich habe damals mit meinem Team zusammen auch 14 Tage gebraucht, alles zu verstehen, auszuprobieren und zu dokumentieren. Die Doku war damals auch noch nicht so üppig wie heute; kaum UCNs

              gut dass man aus Fehlern lernen kann :-)

              jetzt nachdem ich das geändert habe, läuft das auch

              Dar Garbage Controller ist der "Lumpensammler" für abgelaufene Sessions und der wird nur tätig, wenn man den Pfad maximal 2 Ebenen tief macht (laut Doku) also /home/Sessions_paul/
              Deiner hat 5 Ebenen.

              heisst das jetzt also
              das sich der Ordner zumüllt?

              Das würde ich mal im Auge behalten. Stelle doch in der INI mal session.max_lifetime auf einen kurzen Wert von z.B 30sec also 30. Vergiss nicht, den Apachen neu zu starten.

              nur wenn ich das Script jemand gebe, der keinen eigenen Server sondern nur Webspace, der kann das dann nicht beeinflussen
              das fällt also aus ;)

              Und dann greif mit verschiedenen Clients (bei Windows benötigt man dafür entweder mehrere Rechner oder unterschiedliche Browser) auf diese Testdatei zu. Schau dir das Wachstum der Dateien im Verzeichnis an. Wenn Du feststellst, dass es einfach immer mehr werden, dann liegt das an dem bezeichneten Problem des GC. Er will das Verzeichnis dann nicht mehr verarbeiten.

              Der GC scannt übrigens nur das Verzeichnis nach allen Dateien, die mit 'sess_' anfangen. Wenn man ihm das verbietet, indem man dem Parser die Browse-Rechte (R) für das Verzeichnis entzieht, dann bleiben die Dateien auch erhalten. Ich nutze das aktiv, da meine User immer Ihre Session wiederbekommen, aber dafür einen zusätzlichen Cookie für den Zugriff darauf erhalten.

              das werd ich trotzdem mal im Auge behalten
              ich hab das ja jetzt estmal umgestellt, dass mir bei der Entwicklungsphase mal die Session Datei anschauen kann :)

              1. Hello,

                das werd ich trotzdem mal im Auge behalten
                ich hab das ja jetzt estmal umgestellt, dass mir bei der Entwicklungsphase mal die Session Datei anschauen kann :)

                Genau! Ich ahbe zwar gerade am Wochenende im Bildungsfernsehen (meine Freundi war sauer, dass ich unbedingt diese Sendungen sehen wollte, wo sie doch was anderes vorhatte *gg*) gelernt, dass jede Einsichtnahme in unser Universum dieses auch verändert... Also jede Messung verfälscht das Ergebnis und wer viel misst misst Mist... Und ich sehe das eher pragmatisch: nur Messen heißt wissen.

                Also immer anschauen, was da so wann passiert. Hat sich übrigens bewährt, diese "Messpunkte" im Script drinzulassen

                define ('DEBUG',true);

                und dann im Script

                if(DEBUG) echo $diesunddas;

                Harzliche Grüße aus http://www.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau