Mike: session.save_path wie muss die Pfadangabe sein

Hi,

ich habe zwar weiter unten noch einen Thread zu Session, aber der ist ja auch eigentlich geklärt und diese Frage hier ist doch spezifisch.

Ich habe mich nun doch dazu entschlossen mal mit der Pfadangabe zu experimentieren. Aus dem Manual werde ich aber nicht ganz schlau.

Es steht zwar einiges zu komplexen Pfadangeben mit N und irgendwelchen Shellsachen, aber das ist mir im Moment doch zu hoch. Also will ich nur ein einfaches Verzeichnis nutzen. Aber da schweigt sich das Manual aus, wie muss die Pfadangabe sein?

So gehts:
 ini_set('session.save_path','sessions/ordner_1/');

Ohne Slash am Ende gehts auch(was ist besser):
 ini_set('session.save_path','sessions/ordner_1');

Ist das soweit richtig oder müssen das Pfade sein wie:
  /home/verz/www/ztez/www.example.de/htdocs/versuch/sessions/ordner_1

oder sogar (windowssystem):
 I:\htdocs\versuch\sessions\ordner_1

Also wie gesagt es funktioniert mit den ersten beiden Beispielen, aber das heisst ja nicht das richtig sein muss.

Mike

  1. Hello,

    der Session.save_path sollte nicht zu lang werden, weil es da wohl mal Probleme mit dem GC gab.
    Er sollte als absolute Pfadangabe mit dem Slash erstellt werden. PHP korrigiert das selber, wenn der Backslash notwenig ist.
    Nach POSIX müssten Pfade mit dem Slash abgeschlossen werden, das ist aber in der WEB-Welt nicht ganz sauber umgesetzt, speziell im Apachen gibt es da Differenzen.

    also wäre

    C:/var/www/sessions/subdomain/

    oder auch als Aufbau für virtual Hosts:

    C:/var/www/subdomain/htdocs/
      C:/var/www/subdomain/sessions/
      C:/var/www/subdomain/data/
      C:/var/www/subdomain/tmpdir/

    eine sinnvolle Lösung.

    Du musst dann allerdings auch im open_basedir-Parameter den/die Pfad(e) hinzufügen, damit der Parser sich da hinein traut :-)

    Liebe Grüße aus dem Cyberspace

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hallo,

      der Session.save_path sollte nicht zu lang werden, weil es da wohl mal Probleme mit dem GC gab.

      nur der Vollständigkeit halber: Wer ist GC? Ich vermute Garbage Collector?

      Er sollte als absolute Pfadangabe mit dem Slash erstellt werden. PHP korrigiert das selber, wenn der Backslash notwenig ist.

      Ich kann mir im Augenblick keinen Fall vorstellen, in dem der Backslash notwendig ist. Auch Windows kann mit dem '/' als Verzeichnistrennzeichen umgehen - seit Windows 9x so la-la, spätestens seit Windows 2000 komplett (NT4 weiß ich nicht sicher).
      Windows selbst gibt Pfade aber traditionell immer noch mit '' aus.

      Gibt es noch andere Systeme, die sich einen Backslash wünschen?

      Ciao,
       Martin

      --
      Niemand lebt allein von seinen Träumen.
      Aber wer träumt, lebt noch.
      1. Hello,

        Gibt es noch andere Systeme, die sich einen Backslash wünschen?

        Irgendwelche PC-Schnittstellen auf der AS400 z.B. "PC-Support" heißt das nette Tool.

        Liebe Grüße aus dem Cyberspace

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
    2. Hi Tom,

      also wäre

      C:/var/www/sessions/subdomain/

      oder auch als Aufbau für virtual Hosts:

      C:/var/www/subdomain/htdocs/
        C:/var/www/subdomain/sessions/
        C:/var/www/subdomain/data/
        C:/var/www/subdomain/tmpdir/

      eine sinnvolle Lösung.

      nur nochmal um sicher zu gehen, dann sind meine funktionierenden Beispiele also definitiv falsch?

      Mike

      1. Hallo Mike,

        »» also wäre
        »»   C:/var/www/sessions/subdomain/
        »» oder auch als Aufbau für virtual Hosts:
        »»   C:/var/www/subdomain/htdocs/
        »»   C:/var/www/subdomain/sessions/
        »»   C:/var/www/subdomain/data/
        »»   C:/var/www/subdomain/tmpdir/
        »» eine sinnvolle Lösung.

        nur nochmal um sicher zu gehen, dann sind meine funktionierenden Beispiele also definitiv falsch?

        nein, definitiv nicht. :-)
        Allerdings hast du relative Pfade notiert, und ich bin mir nicht sicher, ob PHP selbst versucht, sie auf einen absoluten Pfad abzubilden. Wenn nicht, könnten die Ergebnisse überraschend sein, weil das Basisverzeichnis, auf das eine relative Pfadangabe sich bezieht, unter Windows je nach Kontext unterschiedlich sein kann.

        Ergo: Relative Pfadangaben können richtig sein und funktionieren, aber sie sind nicht immer zuverlässig. Absolute Pfadangaben sind dagegen in jedem Fall eindeutig.

        So long,
         Martin

        --
        Der Gast geht solange zum Tresen, bis er bricht.
    3. Hi,

      der Session.save_path sollte nicht zu lang werden, weil es da wohl mal Probleme mit dem GC gab.

      Vor allem den N-Parameter zur Aufteilung auf Unterverzeichnisse sollte man noch mal erwähnen, bzw. von seinem EInsatz in einer "normalen" Umgebung eher abraten.

      session.save_path:
      "Also note that if N is used and greater than 0 then automatic garbage collection will not be performed, see a copy of php.ini for further information."

      Und in der php.ini steht dann noch mal
      ; NOTE: If you are using the subdirectory option for storing session files
      ;       (see session.save_path above), then garbage collection does *not*
      ;       happen automatically.  You will need to do your own garbage
      ;       collection through a shell script, cron entry, or some other method.

      MfG ChrisB

      --
      Light travels faster than sound - that's why most people appear bright until you hear them speak.