Quel est l'emplacement par défaut des fichiers de session sur une installation d'Apache/PHP sur Ubuntu 10.10?
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.
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).
Un autre emplacement par défaut commun en plus de /tmp/
est /var/lib/php5/
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
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.
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.
Je crois que c'est dans/tmp /. Vérifiez bien votre fonction phpinfo, elle devrait dire session.save_path quelque part.