Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.
Nom | Défaut | Modifiable | Historique |
---|---|---|---|
session.save_path | "" | PHP_INI_ALL | |
session.name | "PHPSESSID" | PHP_INI_ALL | |
session.save_handler | "files" | PHP_INI_ALL | |
session.auto_start | "0" | PHP_INI_PERDIR | |
session.gc_probability | "1" | PHP_INI_ALL | |
session.gc_divisor | "100" | PHP_INI_ALL | |
session.gc_maxlifetime | "1440" | PHP_INI_ALL | |
session.serialize_handler | "php" | PHP_INI_ALL | |
session.cookie_lifetime | "0" | PHP_INI_ALL | |
session.cookie_path | "/" | PHP_INI_ALL | |
session.cookie_domain | "" | PHP_INI_ALL | |
session.cookie_secure | "0" | PHP_INI_ALL | Antérieur à PHP 7.2.0, la valeur par défaut était "" . |
session.cookie_httponly | "0" | PHP_INI_ALL | Antérieur à PHP 7.2.0, la valeur par défaut était "" . |
session.cookie_samesite | "" | PHP_INI_ALL | Disponible à partir de PHP 7.3.0. |
session.use_strict_mode | "0" | PHP_INI_ALL | |
session.use_cookies | "1" | PHP_INI_ALL | |
session.use_only_cookies | "1" | PHP_INI_ALL | |
session.referer_check | "" | PHP_INI_ALL | |
session.cache_limiter | "nocache" | PHP_INI_ALL | |
session.cache_expire | "180" | PHP_INI_ALL | |
session.use_trans_sid | "0" | PHP_INI_ALL | |
session.trans_sid_tags | "a=href,area=href,frame=src,form=" | PHP_INI_ALL | Disponible à partir de PHP 7.1.0. |
session.trans_sid_hosts | $_SERVER['HTTP_HOST'] |
PHP_INI_ALL | Disponible à partir de PHP 7.1.0. |
session.sid_length | "32" | PHP_INI_ALL | Disponible à partir de PHP 7.1.0. |
session.sid_bits_per_character | "4" | PHP_INI_ALL | Disponible à partir de PHP 7.1.0. |
session.upload_progress.enabled | "1" | PHP_INI_PERDIR | |
session.upload_progress.cleanup | "1" | PHP_INI_PERDIR | |
session.upload_progress.prefix | "upload_progress_" | PHP_INI_PERDIR | |
session.upload_progress.name | "PHP_SESSION_UPLOAD_PROGRESS" | PHP_INI_PERDIR | |
session.upload_progress.freq | "1%" | PHP_INI_PERDIR | |
session.upload_progress.min_freq | "1" | PHP_INI_PERDIR | |
session.lazy_write | "1" | PHP_INI_ALL | |
session.hash_function | "0" | PHP_INI_ALL | Supprimé à partir de PHP 7.1.0 |
session.hash_bits_per_character | "4" | PHP_INI_ALL | Supprimé à partir de PHP 7.1.0 |
session.entropy_file | "" | PHP_INI_ALL | Supprimé à partir de PHP 7.1.0. |
session.entropy_length | "0" | PHP_INI_ALL | Supprimé à partir de PHP 7.1.0. |
Le système de sessions dispose d'un grand nombre de directives dans le fichier php.ini. En voici une présentation :
session.save_handler
string
files
. Noter que les
extensions individuelles doivent enregistrer
leurs propres gestionnaires de session. Voir aussi
session_set_save_handler().
session.save_path
string
Il y a un argument optionnel N
à cette directive qui détermine
la profondeur de répertoires où votre fichier de session sera stocké.
Par exemple, si vous définissez '5;/tmp'
, votre fichier
sera situé dans /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If
.
Si vous voulez utiliser N
, vous devez créer
tous ces répertoires avant de les utiliser. Un petit script shell existe dans
ext/session pour réaliser ces créations et il se nomme
mod_files.sh, et sa version Windows porte le nom
mod_files.bat. Notez également que si N
est utilisé et est supérieur à 0, alors la routine automatique gc (garbage collection)
ne sera pas exécutée ; voir une copie de php.ini pour plus d'informations.
Également, si vous utilisez N
, assurez-vous d'entourer
session.save_path
de "doubles guillemets" car le séparateur
(;
) est également utilisé pour les commentaires dans
php.ini.
Le module de stockage de fichiers crée des fichiers en utilisant le mode
600 par défaut. Ce mode par défaut peut être modifié en utilisant l'argument
optionnel MODE
: N;MODE;/path
où
MODE
est la représentation octale du mode.
Le fait de définir l'argument MODE
n'affecte pas le processus
umask.
Si cette option est configurée avec un dossier accessible en lecture à tout le monde, comme /tmp (par défaut), les autres utilisateurs pourront exploiter ces sessions en obtenant la liste de fichiers dans ce dossier.
Lors de l'utilisation de l'argument optionnel N
déterminant la profondeur de répertoires, voir plus haut, veuillez noter
que l'utilisation d'une valeur supérieure à 1 ou 2 n'est pas approprié
pour la majorité des sites à cause du nombre de dossiers requis : par
exemple, une valeur de 3 implique que
(2 ** session.sid_bits_per_character) ** 3
dossiers
existent sur le système de fichiers ce qui implique potentiellement un
grand nombre d'espaces et d'inodes gaspillés.
N'utilisez une valeur de N
supérieure à 2 uniquement
si vous êtes certain que c'est nécessaire pour votre site.
session.name
string
PHPSESSID
.
Voir aussi session_name().
session.auto_start
bool
0
(désactivé).
session.serialize_handler
string
php_serialize
), les formats internes à PHP
(nommés php
et php_binary
)
et WDDX (nommé wddx
) sont supportés. WDDX est seulement
disponible, si PHP a été compilé avec l'option
WDDX. php_serialize
utilise les fonctions de linéraisation/délinéarisation en interne,
et n'a pas les limitations que php
et php_binary
ont. Les anciens gestionnaires de linéarisation ne peuvent pas stocker
d'index numérique, ni d'index sous forme de chaînes qui contiennent
des caractères spéciaux (|
et !
) en
$_SESSION. Utilisez php_serialize
pour éviter ce
genre d'erreur en fin de script. Par défaut, c'est php
.
session.gc_probability
int
session.gc_divisor
, que la routine gc
(garbage collection
)
soit démarrée à chaque requête. La valeur par défaut est 1
.
Voir session.gc_divisor pour plus de détails.
session.gc_divisor
int
session.gc_divisor
en conjonction avec
session.gc_probability
définit la probabilité que la routine gc
(garbage collection
) soit démarrée à chaque début de session.
La probabilité est calculée en utilisant gc_probability/gc_divisor, par
exemple 1/100 signifie qu'il y a 1 % de chance pour que la routine gc
démarre à chaque requête. La valeur par défaut est 100
.
session.gc_maxlifetime
int
1440
(24 minutes).
Note: Si des scripts différents ont des valeurs différentes de
session.gc_maxlifetime
mais partagent le même endroit pour y stocker les données de session, alors, le script dont la valeur est la plus petite effacera la donnée. Dans ce cas, utilisez cette directive conjointement avec session.save_path.
session.referer_check
int
session.entropy_file
string
/dev/random
et
/dev/urandom
, qui sont disponibles sur
tous les systèmes Unix.
Cette fonctionnalité est supportée sous Windows.
Le fait de définir session.entropy_length
à une valeur
différente de zéro fera que PHP utilisera l'API aléatoire de Windows comme
source d'entropie.
Note: Supprimé dans PHP 7.1.0.
session.entropy_file
vaut par défaut/dev/urandom
ou/dev/arandom
s'il est disponible.
session.entropy_length
int
32
.
Supprimé dans PHP 7.1.0.
session.use_strict_mode
bool
session.use_strict_mode
spécifie si le module doit
utiliser le mode d'identifiant de session strict. Si ce mode est activé,
le module ne va pas accepter des identifiants de session non-initialisée.
Si un identifiant de session non-initialisée est envoyé depuis le navigateur,
un nouvel identifiant de session sera envoyé au navigateur. Les
applications sont protégées des fixations de session via l'utilisation
du mode strict des sessions.
Par défaut, vaut 0
(désactivé).
Note: Activer
session.use_strict_mode
est obligatoire pour la sécurité générale des sessions. Il est conseillé de l'activer pour tous les sites. Voir l'exemple de code de session_create_id() pour plus de détails.
Si un gestionnaire de session enregistré via la fonction
session_set_save_handler() n'implémente pas
SessionUpdateTimestampHandlerInterface::validateId(),
ni ne fournit la fonction de rappel validate_sid
, respectivement,
le mode d'identifiant de session strict sera effectivement désactivé, suivant la valeur
de cette directive. Notez que SessionHandler n'implémente
pas la méthode SessionHandler::validateId().
1
, c'est-à-dire actif.
1
(activé).
0
signifie : "Jusqu'à ce que le navigateur soit éteint".
La valeur par défaut est 0
. Voir aussi
session_get_cookie_params() et
session_set_cookie_params().
Note: Le timestamp représentant la durée de vie du cookie est défini par rapport au temps du serveur, qui n'est pas forcément le même que le temps du navigateur.
/
.
Voir aussi
session_get_cookie_params() et
session_set_cookie_params().
off
.
Voir aussi
session_get_cookie_params() et
session_set_cookie_params().
Lax
et Strict
signifie que le cookie
ne sera pas envoyé pour des requêtes POST entre domaines ; Lax
enverra le cookie pour des requêtes GET entre domaines, tandis que Strict
n'en enverra pas.
session.cache_limiter
string
nocache
, private
,
private_no_expire
, public
.
Par défaut, il vaut nocache
.
Voir aussi session_cache_limiter() pour
connaître la signification de ces valeurs.
session.cache_expire
int
180
(3 heures).
Voir aussi
session_cache_expire().
session.use_trans_sid
bool
0
(désactivé).
Note: Le système de gestion des sessions par URL pose un risque supplémentaire de sécurité : un utilisateur peut envoyer son URL avec l'identifiant de session par email à un ami, ou bien le mettre dans ses signets. Cela diffusera alors l'identifiant de session. Depuis PHP 7.1.0, le chemin URL complet, par exemple https://php.net/, est est géré par la fonctionnalité. Précédement, PHP gérait le chemin relatif uniquement. L'hote cible de la réécriture est défini par session.trans_sid_hosts.
session.trans_sid_tags
spécifie les balises HTML qui
sont réécrite pour include l'ID de session lorsque le support du SID
transparent est activé. Par défaut
a=href,area=href,frame=src,input=src,form=
form
est une balise spéciale. La variable de formulaire
<input hidden="session_id" name="session_name">
est ajoutée.
Note: Avant PHP 7.1.0, url_rewriter.tags était utilisé à cette fin. Depuis PHP 7.1.0,
fieldset
n'est plus considéré comme une balise spéciale.
session.trans_sid_hosts
string
session.trans_sid_hosts
spécifie kes hôtes qui sont
réécrit pour inclure l'ID de session lorsque le support du SID transparent
est activé. Par défaut $_SERVER['HTTP_HOST']
. Plusieurs
hôtes peuvent être spécifiés séparé par ",", aucun espace n'est autorisé
entre les hôtes. Par exemple :
php.net,wiki.php.net,bugs.php.net
session.sid_length
int
session.sid_length
vous permet de spécifier la longueur
de la chaine d'ID de session. La longueur de l'ID de session peut être
comprise entre 22 et 256.
La valeur par défaut est 32. Si vous avez besoin de compatibilité, vous
pouvez spécifier 32, 40, etc. L'ID de session plus long est plus difficile
à deviner. Au moins 32 caractères sont recommandés.
Note de compatibilité: utiliser 32 au lieu de
session.hash_function
=0 (MD5) et
session.hash_bits_per_character
=4,
session.hash_function
=1 (SHA1) et
session.hash_bits_per_character
=6. Utiliser 26 au lieu de
session.hash_function
=0 (MD5) et
session.hash_bits_per_character
=5. Utiliser 22 au lieu de
session.hash_function
=0 (MD5) et
session.hash_bits_per_character
=6.
Vous devez configurer les valeurs INI pour qu'il y ait 128 bits dans
l'ID de session. N'oubliez pas de définir la valeur appropriée à
session.sid_bits_per_character
, sinon vous aurez des
ID de session plus faible.
Note: Disponible à partir de PHP 7.1.0.
session.sid_bits_per_character
int
session.sid_bits_per_character
vous permet de spécifier le
nombre de bits dans le caractère codé dans l'ID de session. Les valeurs
possibles sont
'4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", ",").
La valeur par défaut est 4. Plus de bits aboutit à un ID de session plus
fort. 5 est la valeur recommandée pour la plupart des environnements.
Note: Disponible à partir de PHP 7.1.0.
session.hash_function
mixed
session.hash_function
vous permet de spécifier la fonction
de hachage à utiliser pour générer les identifiants de session. '0' signifie
MD5 (128 bits) et '1' signifie SHA-1 (160 bits).
Il est également possible de spécifier n'importe
quel algorithme fourni par l'extension hash
(s'il est disponible), comme sha512
ou
whirlpool
. Une liste complète d'algorithmes peut être
obtenue avec la fonction hash_algos().
Note: Supprimé dans PHP 7.1.0.
session.hash_bits_per_character
int
session.hash_bits_per_character
vous permet de définir
le nombre de bits utilisés pour chaque caractère lors des conversions des
données binaires en éléments lisibles. Les valeurs possibles sont '4' (0-9,
a-f), '5' (0-9, a-v), et '6' (0-9, a-z, A-Z, "-", ",").
Note: Supprimé dans PHP 7.1.0.
session.upload_progress.enabled
bool
session.upload_progress.cleanup
bool
Note: Il est vivement recommandé de conserver active cette fonctionnalité.
session.upload_progress.prefix
string
$_POST[ini_get("session.upload_progress.name")]
pour fournir un index unique.
Par défaut, vaut "upload_progress_".
session.upload_progress.name
string
$_POST[ini_get("session.upload_progress.name")]
n'est pas fourni ou disponible, la progression d'un téléchargement ne sera pas enregistrée.
Par défaut, vaut "PHP_SESSION_UPLOAD_PROGRESS".
session.upload_progress.freq
mixed
session.upload_progress.min_freq
int
session.lazy_write
bool
session.lazy_write
, quand défini à 1, cela signifie que
la donnée de session ne sera réécrite uniquement si celle ci change. Par
défaut 1, activé.
La progression de téléchargement ne sera pas enregistrée tant que session.upload_progress.enabled n'est pas actif, et que la variable $_POST[ini_get("session.upload_progress.name")] n'est pas définie. Voir la progression de téléchargement de session pour plus d'informations sur cette fonctionnalité.