web-dev-qa-db-fra.com

Emplacement des fichiers de session dans Apache / PHP

Quel est l'emplacement par défaut des fichiers de session sur une installation d'Apache/PHP sur Ubuntu 10.10?

69
cambraca

La valeur par défaut session.save_path est définie sur "", Ce qui correspond au répertoire temporaire de votre système. . Voir ce commentaire à https://bugs.php.net/bug.php?id=26757 déclarant:

La nouvelle valeur par défaut pour save_path dans la prochaine version (sic) sera la chaîne vide, ce qui entraîne la détection du répertoire temporaire.

Vous pouvez utiliser sys_get_temp_dir Pour renvoyer le chemin du répertoire utilisé pour les fichiers temporaires

Pour trouver le chemin de sauvegarde de la session actuelle , vous pouvez utiliser

Reportez-vous à cette réponse pour savoir quel est le chemin temporaire lorsque cette fonction renvoie une chaîne vide.

70
Gordon

Commencez par vérifier la valeur de session.save_path En utilisant ini_get('session.save_path') ou phpinfo(). Si ce n'est pas vide, alors il montrera où les fichiers de session sont sauvegardés. Dans de nombreux scénarios, il est vide par défaut, auquel cas, lisez ce qui suit:

Sur les machines Ubuntu ou Debian, si session.save_path N'est pas défini, les fichiers de session sont enregistrés dans /var/lib/php5.

Sur les systèmes RHEL et CentOS, si session.save_path N'est pas défini, les fichiers de session seront enregistrés dans /var/lib/php/session.

Je pense que si vous compilez PHP à partir du source, alors quand session.save_path N'est pas défini, les fichiers de session seront sauvegardés dans /tmp (Je ne l'ai pas testé moi-même. bien que).

60
Rich

Un autre emplacement par défaut commun en plus de /tmp/ est /var/lib/php5/

15
Kevin Borders

En cas de doute sur la compilation par défaut, examinez le php.ini Pertinent.
Normalement, ceci affichera la valeur par défaut commentée.

Ubuntu/Debian anciens/nouveaux php.ini Emplacements:
Php5 plus ancien avec Apache: /etc/php5/Apache2/php.ini
Php5 plus ancien avec NGINX + FPM: /etc/php5/fpm/php.ini
Ubuntu 16+ avec Apache: /etc/php/*/Apache2/php.ini *
Ubuntu 16+ avec NGINX + FPM - /etc/php/*/fpm/php.ini *

* /*/ = La version actuelle PHP version (s) installée (s) sur le système.

Pour afficher la version PHP utilisée sous Apache:

$ a2query -m | grep "php" | grep -Eo "[0-9]+\.[0-9]+"

7.3

Puisque PHP 7.3 est la version en cours d'exécution pour cet exemple, vous l'utiliserez pour le php.ini:

$ grep "session.save_path" /etc/php/7.3/Apache2/php.ini

;session.save_path = "/var/lib/php/sessions"

Ou, une ligne doublée:

$ APACHEPHPVER=$(a2query -m | grep "php" | grep -Eo "[0-9]+\.[0-9]+") \ && grep ";session.save_path" /etc/php/${APACHEPHPVER}/Apache2/php.ini

Résultat:

;session.save_path = "/var/lib/php/sessions"


Ou utilisez PHP lui-même pour saisir la valeur à l'aide de l'environnement "cli" (voir [~ # ~] note [~ # ~] ci-dessous):

$ php -r 'echo session_save_path() . "\n";'
/var/lib/php/sessions
$

Ceux-ci fonctionneront également:

php -i | grep session.save_path

php -r 'echo phpinfo();' | grep session.save_path

REMARQUE:

La version 'cli' (ligne de commande) de php.ini normalement a les mêmes valeurs par défaut que les versions Apache2/FPM (au moins aussi loin que session.save_path ). Vous pouvez également utiliser une commande similaire pour faire écho aux paramètres actuels du module du serveur Web PHP) sur une page Web et utiliser wget/curl pour récupérer les informations. There nombreux messages concernant phpinfo() à utiliser à cet égard, mais il est plus rapide d'utiliser simplement l'interface PHP ou grep dans le bon php.ini pour montrer sa valeur par défaut.

EDIT: Par commentaire @aesede -> Ajouté php -i. Merci

13
bshea

J'ai eu le même problème pour trouver le bon chemin pour les sessions sur un Mac. Dans l'ensemble, j'ai découvert que la CLI PHP a un répertoire temporaire différent de celui du module Apache: Apache utilisait /var/tmp, Tandis que la CLI utilisait quelque chose comme /var/folders/kf/hk_dyn7s2z9bh7y_j59cmb3m0000gn/T Mais les deux manières, sys_get_temp_dir() m'a donné le bon chemin quand session.save_path Est vide. Utiliser PHP 5.5.4.

4
themarketka

La seule option sûre pour trouver la valeur actuelle session.save_path Consiste toujours à vérifier avec phpinfo() dans l'environnement dans lequel vous souhaitez connaître le répertoire de stockage de la session.

Raison: il peut y avoir toutes sortes de choses qui changent session.save_path, Soit en remplaçant la valeur php.ini, Soit en le définissant à l'exécution avec ini_set('session.save_path','/path/to/folder');. Par exemple, les panneaux de gestion de serveur Web tels que ISPConfig, Plesk, etc., adaptent souvent cela pour donner à chaque site Web son propre répertoire avec des fichiers de session.

0
tanius

Je crois que c'est dans/tmp /. Vérifiez bien votre fonction phpinfo, elle devrait dire session.save_path quelque part.

0
profitphp