Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP Session Timeout

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] PHP Session Timeout

    Hallo,

    ich suche gerade nach dem Fehler, warum meine Session sich nach ca. 30 min beendet.
    Folgende Konfiguration habe ich vorgenommen und zeigt keinen Erfolg:
    PHP-Code:
    ini_set('session.gc_maxlifetime',86400);
    ini_set('session.gc_probability',1);
    ini_set('session.gc_divisor',100);
    ini_set('session.cookie_lifetime',0);

    session_start();

    if(
    $_SESSION['user']['login_time']<=time()-7200)/*User Logout after 2H*/{
       
    session_unset();
    }elseif(
    $_SESSION['user']['login_time']){
       
    $_SESSION['user']['login_time']=time();

    Dadurch sollte die Session 24h laufen ... allerdings beendet sie sich immer noch nach 30min (wahrscheinlich 24min Standardeinstellung). Herausgefunden habe ich es, nachdem der User nicht wie programmiert nach 2 Stunden ausgeloggt wird, sonder ca 30 min.

    Hier noch einen Auszug der phpinfo:
    Session Support enabled
    Registered save handlers files user memcache
    Registered serializer handlers php php_binary wddx
    session.auto_start Off Off
    session.cache_expire 180 180
    session.cache_limiter nocache nocache
    session.cookie_domain no value no value
    session.cookie_httponly Off Off
    session.cookie_lifetime 0 0
    session.cookie_path / /
    session.cookie_secure Off Off
    session.entropy_file /dev/urandom /dev/urandom
    session.entropy_length 32 32
    session.gc_divisor 100 1000
    session.gc_maxlifetime 86400 1440
    session.gc_probability 1 0
    session.hash_bits_per_character 5 5
    session.hash_function 0 0
    session.name PHPSESSID PHPSESSID
    session.referer_check no value no value
    session.save_handler files files
    session.save_path /var/lib/php5 /var/lib/php5
    session.serialize_handler php php
    session.upload_progress.cleanup On On
    session.upload_progress.enabled On On
    session.upload_progress.freq 1% 1%
    session.upload_progress.min_freq 1 1
    session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
    session.upload_progress.prefix upload_progress_ upload_progress_
    session.use_cookies On On
    session.use_only_cookies On On
    session.use_trans_sid 0 0
    Hoffentlich hat noch jemand eine Idee die mir helfen könnte.

  • #2
    Unter welchen Betriebsystem läuft dein PHP?

    Kommentar


    • #3
      OS: Debian 7.8
      PHP: PHP Version 5.4.36-0+deb7u3


      Kommentar


      • #4
        Debian löscht die PHP-Session-Files via Cronjob und nutzt dazu ein Script (/usr/lib/php5/maxlifetime) welches den Session-Timeout aus der php.ini (session.gc_maxlifetime) ausliest.

        Grüße-

        Kommentar


        • #5
          Danke für den Tipp.

          Über dieses Script und seine Funktionsweise bin ich darauf gestoßen das unter Debian die Lokale session.gc_maxlifetime ignoriert wird und immer der Globale wert genommen wird.

          Nach weiterem Nachforschen bin ich auf folgenden Beitrag bei Stackoverflow.com gekommen.

          PHP-Code:
          $APPPATH dirname(__FILE__);

          if(!
          file_exists($APPPATH.'/tmp/sessions'))
          {
              
          mkdir($APPPATH.'/tmp/sessions',0700,TRUE);
          }

          ini_set('session.save_path',$APPPATH.'/tmp/sessions'); 
          Mit dem setzen eines separaten Verzeichnisses (session.save_path) greift der Debian Chronjob nicht mehr und die Lokal Gesetzen Einstellungen von PHP werden übernommen.

          Damit funktioniert alles Danke für die Hilfe!

          Edit: Wo kann ich den Beitrag als gelöst setzen?

          Kommentar


          • #6
            Zitat von Hammurabi Beitrag anzeigen
            Mit dem setzen eines separaten Verzeichnisses session.save_path greift der Debian Chronjob nicht mehr und die Lokal Gesetzen Einstellungen von PHP werden übernommen.
            Wäre es nicht einfacher den Cronjob zu deaktivieren, wenn du diesen nicht möchtest?

            Kommentar


            • #7
              Edit: Wo kann ich den Beitrag als gelöst setzen?
              Ist (noch) nicht möglich. Ich setzte dir aber gerne ein erledigt von den Thementitel.
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Zitat von Blar Beitrag anzeigen

                Wäre es nicht einfacher den Cronjob zu deaktivieren, wenn du diesen nicht möchtest?
                Das könnte natürlich auch funktionieren.
                Allerdings wenn man den Server mal aktualisiert oder die Webseite auf einen anderen Server umzieht, muss man immer daran denken, diesen wieder zu deaktivieren.
                Denn schließlich ist das die Standard Konfiguration unter Debian.

                Kommentar

                Lädt...
                X