web-dev-qa-db-fra.com

Déconnecté trop tôt; PHP Les sessions expirent trop rapidement. Est-ce un problème Linux, CentOS, Cookies, CPanel?

Récemment, je me suis déconnecté plus tôt que prévu sur plusieurs sites Web que je gère sur des serveurs Linux. Le problème a commencé spontanément il y a quelques mois. À l'époque, je n'avais apporté aucune modification récente au code du site Web ni aux paramètres CPanel. Ce n'était pas nécessaire, car mes paramètres CPanel m'ont toujours gardé connecté pendant environ 18 heures. Mais maintenant, je suis déconnecté après seulement 30 minutes d'inactivité. Voici les paramètres de CPanel qui fonctionnaient de manière fiable jusqu'à il y a quelques mois:

session.cookie_lifetime 0
session.gc_maxlifetime 65535

Pour le dépannage, j'ai également essayé les paramètres équivalents dans le fichier htaccess:

php_value session.cookie_lifetime 0
php_value session.gc_maxlifetime 65535

(65535 secondes équivalent à environ 18 heures.)

J'ai testé ce problème avec trois PHP formes différentes. Tout d'abord, je me connecte avec un nom d'utilisateur et un mot de passe. Si je puis appuyer sur F5 pour actualiser dans les 30 minutes, je suis toujours connecté. Mais si j'attends plus de 30 minutes avant d'actualiser la page, je constate que j'ai été déconnecté. De plus, j'ai essayé deux serveurs différents fournis par le même hôte Web, mais le problème persiste.

Je suis sur un serveur partagé CentOS et je n'ai pas accès au fichier php.ini, mais uniquement aux fichiers CPanel et .htaccess.

Je soupçonne que ce problème a été causé par une récente mise à jour de Linux/CentOS, mais je ne vois pas de plaintes similaires sur Internet. Je me demande donc si c'est juste mon hébergeur. (Ils sont par ailleurs très fiables.)

Est-ce que quelqu'un à rencontré ce problème? Est-ce un bogue Linux/CentOS? Y a-t-il un correctif? Ou devrais-je passer à un autre hébergeur?

2
Photon

Merci pour l'aide de dépannage. J'ai résolu le problème - en spécifiant un dossier personnalisé pour stocker les données de session temporaires. Voici comment:

  1. Localisez le dossier dans lequel vos fichiers de données de session sont actuellement stockés. Dans mon cas, le dossier s'appelait tmp. Le nom et l'emplacement du dossier peuvent varier, en fonction de votre version de Linux et de la manière dont elle a été configurée.

  2. Créez un nouveau dossier, situé dans le même dossier que le dossier tmp (et non dans le dossier tmp).

  3. Dans cPanel (version php/PHP Selector | options), spécifiez le chemin d'accès complet du nouveau dossier comme valeur pour session.save_path. Vous pouvez également le faire dans votre fichier php.ini, si vous y avez accès.

Si vous avez besoin de plus d'informations, les liens suivants peuvent être utiles:

https://security.stackexchange.com/questions/19053/where-and-how-is-data-stored-in-a-session-

https://stackoverflow.com/questions/4927850/location-for-session-files-in-Apache-php

https://docs.cloudlinux.com/index.html?tmp_directories.html (Documentation CloudLinux: répertoires Tmp)

J'espère que cela aidera tous ceux qui rencontreront le même problème à l'avenir.

1
Photon