Ce problème m'a rendu fou. Sur deux projets distincts (tous deux utilisant PEAR comme bibliothèques mais écrits sur des frameworks complètement différents), j'utilise PEAR Auth pour l'authentification qui utilise la session. Après la connexion, les utilisateurs sont déconnectés en l'espace d'une heure environ. Je n'ai pas l'heure exacte, mais c'est très court.PHP PEAR Auth expiration de la session d'authentification
J'ai essayé ce qui suit sans succès. Toutes les tentatives d'étendre la session à un jour, juste pour clouer le point à la maison.
<?php
// Tried built-in methods to extend the idle time, called after Auth is initialised
$auth->setIdle(86400);
// Tried increasing the sesion timeout (before auth is called)
ini_set('session.gc_maxlifetime', 86400);
// Tried increasing the cookie timeout (where the phpsession is held, before auth is called)
session_set_cookie_params(86400);
// Tried all of the above
?>
Est-ce que quelqu'un d'autre a eu ce problème? Si oui, est-il possible de prolonger le temps d'inactivité?
Je suis à peu près prêt à faire peler PEAR et à écrire ma propre classe d'authentification basée sur les cookies, mais je n'ai pas vraiment le temps.
Merci! Je vais essayer et vous faire savoir comment ça se passe. – teaforchris
Essayé setExpire() en plus de setIdle() comme conseillé, mais cela ne semble pas avoir fait de différence. Le serveur étant un serveur cloud, je ne suis pas entièrement sûr de la manière dont les sessions sont stockées - il pourrait bien y avoir des interférences avec d'autres scripts. Pensez-vous que l'utilisation d'un session.save_path différent pour l'application Web en question serait utile? – teaforchris
Oui, vous devriez certainement essayer. Si c'est un serveur cloud, il y a de fortes chances qu'il y ait plus d'applications php en cours d'exécution, donc cela pourrait bien être le coupable. Si le chemin n'est pas spécifié, il est par défaut '/ tmp' sur les serveurs * nix, donc le régler sur quelque chose comme '/ tmp/[votreNomApp]' (ou mieux encore, '/ tmp/[hash de votreNomApp]') pourrait résoudre votre problème (au moins, cela exclurait une autre raison possible;) –