Configuration à l'exécution
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 | Disponible depuis PHP 4.3.2. |
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 | "" | PHP_INI_ALL | Disponible depuis PHP 4.0.4. |
session.cookie_httponly | "" | PHP_INI_ALL | Disponible depuis PHP 5.2.0. |
session.use_strict_mode | "0" | PHP_INI_ALL | Disponible depuis PHP 5.5.2. |
session.use_cookies | "1" | PHP_INI_ALL | |
session.use_only_cookies | "1" | PHP_INI_ALL | Disponible depuis PHP 4.3.0. |
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 | PHP_INI_ALL en PHP <= 4.2.3. PHP_INI_PERDIR en PHP < 5. Disponible depuis PHP 4.0.3. |
session.trans_sid_tags | "a=href,area=href,frame=src,form=" | PHP_INI_ALL | Disponible depuis PHP 7.1.0. |
session.trans_sid_hosts | $_SERVER['HTTP_HOST'] | PHP_INI_ALL | Disponible depuis PHP 7.1.0. |
session.sid_length | "32" | PHP_INI_ALL | Disponible depuis PHP 7.1.0. |
session.sid_bits_per_character | "5" | PHP_INI_ALL | Disponible depuis PHP 7.1.0. |
session.upload_progress.enabled | "1" | PHP_INI_PERDIR | Disponible depuis PHP 5.4.0. |
session.upload_progress.cleanup | "1" | PHP_INI_PERDIR | Disponible depuis PHP 5.4.0. |
session.upload_progress.prefix | "upload_progress_" | PHP_INI_PERDIR | Disponible depuis PHP 5.4.0. |
session.upload_progress.name | "PHP_SESSION_UPLOAD_PROGRESS" | PHP_INI_PERDIR | Disponible depuis PHP 5.4.0. |
session.upload_progress.freq | "1%" | PHP_INI_PERDIR | Disponible depuis PHP 5.4.0. |
session.upload_progress.min_freq | "1" | PHP_INI_PERDIR | Disponible depuis PHP 5.4.0. |
session.lazy_write | "1" | PHP_INI_ALL | Disponible depuis PHP 7.0.0. |
url_rewriter.tags | "a=href,area=href,frame=src,form=,fieldset=" | PHP_INI_ALL | Disponible depuis PHP 4.0.4. Depuis PHP 7.1.0, cette valeur n'est plus utilisée par la session |
session.hash_function | "0" | PHP_INI_ALL | Disponible depuis PHP 5.0.0. Supprimé dans PHP 7.1.0 |
session.hash_bits_per_character | "4" | PHP_INI_ALL | Disponible depuis PHP 5.0.0. Supprimé dans PHP 7.1.0 |
session.entropy_file | "" | PHP_INI_ALL | Supprimé en PHP 7.1.0. |
session.entropy_length | "0" | PHP_INI_ALL | Supprimé en PHP 7.1.0. |
session.bug_compat_42 | "1" | PHP_INI_ALL | Disponible depuis PHP 4.3.0. Supprimé en PHP 5.4.0. |
session.bug_compat_warn | "1" | PHP_INI_ALL | Disponible depuis PHP 4.3.0. Supprimé en PHP 5.4.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 - Définit le nom du gestionnaire de session qui est utilisé pour stocker et relire les données. Par défaut, c'est le système intégré par fichiers : files. Noter que les extensions individuelles doivent enregistrer leurs propres gestionnaires de session. Voir aussi session_set_save_handler().
-
session.save_path
string -
Définit le chemin qui doit être passé
au gestionnaire de sauvegarde. Si vous décidez de
choisir le gestionnaire par défaut (par fichiers),
cet argument sera utilisé comme dossier de sauvegarde
des sessions. Voir aussi
session_save_path().
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.
AvertissementSi vous laissez cette option 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.
AttentionLors 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 64^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.
Note: Avant PHP 4.3.6, les utilisateurs de Windows doivent changer cette valeur de variable pour que les fonctions de sessions de PHP fonctionnent. Indiquez un chemin de dossier valide, par exemple : c:/temp.
-
session.name
string - Spécifie le nom de la session, qui sera utilisé comme nom de cookie. Il ne doit contenir que des caractères alphanumériques. Par défaut, c'est PHPSESSID. Voir aussi session_name().
-
session.auto_start
booléen - Spécifie si le module de session doit démarrer automatiquement au début de chaque script PHP. Par défaut, c'est 0 (désactivé).
-
session.serialize_handler
string - Définit le nom du gestionnaire qui est utilisé pour linéariser et délinéariser les données. Le format de linéarisation PHP (nommé 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 est disponible depuis PHP 5.5.4. 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
entier - Spécifie la probabilité, exprimée en pourcentage, en conjonction de 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
entier - 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
entier -
Spécifie la durée de vie des données sur le serveur, en nombre
de secondes. Après cette durée, les données seront considérées
comme obsolètes, et peuvent potentiellement être supprimées.
Les données peuvent devenir obsolètes lors du démarrage de la session
(suivant session.gc_probability et
session.gc_divisor).
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
entier - Contient une sous-chaîne que vous souhaitez retrouver dans tous les en-têtes HTTP Referer. Si cet en-tête a été envoyé par le client et que la sous-chaîne n'a pas été trouvée, l'identifiant de session sera considéré comme invalide. Par défaut, cette option est une chaîne vide.
-
session.entropy_file
string -
Est un chemin jusqu'à
une source externe (un fichier), qui sera utilisée comme source
additionnelle d'entropie pour la création de l'identifiant
de session. Des exemples valides sont /dev/random et
/dev/urandom, qui sont disponibles sur
tous les systèmes Unix.
Cette fonctionnalité est supportée sous Windows depuis PHP 5.3.3.
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. Depuis PHP 5.4.0, session.entropy_file vaut par défaut /dev/urandom ou /dev/arandom s'il est disponible. En PHP 5.3.0, cette directive est laissée vide par défaut.
-
session.entropy_length
entier - Spécifie le nombre d'octets qui seront lus dans le fichier défini ci-dessus. Par défaut 32. Supprimé dans PHP 7.1.0.
-
session.use_strict_mode
boolean -
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'activé pour tous les sites. Voir l'exmple de code de session_create_id() pour plus de détails.
- Spécifie si le module utilisera les cookies pour stocker l'id de session côté client. Par défaut, il vaut 1, c'est-à-dire actif.
- Spécifie si le module doit utiliser seulement les cookies pour stocker les identifiants de sessions du côté du navigateur. En l'activant, vous éviterez les attaques qui utilisent des identifiants de sessions dans les URL. Cette configuration a été ajoutée en PHP 4.3.0. Par défaut, vaut 1 (activé) depuis PHP 5.3.0.
-
Spécifie la durée de vie du cookie en secondes. La valeur de
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.
- Spécifie le chemin utilisé lors de la création du cookie. Par défaut, il vaut /. Voir aussi session_get_cookie_params() et session_set_cookie_params().
- Spécifie le domaine utilisé lors de la création du cookie. Par défaut, il ne vaut rien, cela signifie que c'est le nom de l'hôte du serveur qui génère le cookie en accord avec les spécifications sur les cookies. Voir aussi session_get_cookie_params() et session_set_cookie_params().
- Spécifie que les cookies ne doivent être émis que sur des connexions sécurisées. Par défaut, cette option est à off. Cette option a été ajoutée en PHP 4.0.4. Voir aussi session_get_cookie_params() et session_set_cookie_params().
- Marque le cookie pour qu'il ne soit accessible que via le protocole HTTP. Cela signifie que le cookie ne sera pas accessible par les langage de script, comme Javascript. Cette configuration permet de limiter les attaques comme les attaques XSS (bien qu'elle n'est pas supporté par tous les navigateurs).
-
session.cache_limiter
string - Spécifie le type de contrôle de cache utilisé pour les pages avec sessions. Les valeurs possibles sont : 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
entier - Spécifie la durée de vie des données de sessions, en minutes. Cette option n'a aucune conséquence sur le contrôle de cache. Par défaut, il vaut 180 (3 heures). Voir aussi session_cache_expire().
-
session.use_trans_sid
booléen -
Spécifie si le support du SID est transparent ou pas. Par défaut vaut 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.bug_compat_42
booléen -
Les versions de PHP antérieures à la version 4.2.3
disposaient d'une
fonctionnalité/bogue non documentée, qui vous permettait
d'initialiser une variable de session dans le contexte global, même si
register_globals
était désactivé. PHP 4.3.0 et plus récent vous préviendra de l'utilisation
de cette fonctionnalité si vous avez aussi activé
session.bug_compat_warn.
Cette fonctionnalité/bogue peut être désactivée en désactivant cette directive.
Note: Supprimé en PHP 5.4.0.
-
session.bug_compat_warn
booléen -
Les versions de PHP antérieures à la version 4.2.3
disposaient d'une
fonctionnalité/bogue non documentée, qui vous permettait d'initialiser
une variable de session dans le contexte global, même si
register_globals
était désactivé. PHP 4.3.0 et plus récent vous préviendra de l'utilisation
de cette fonctionnalité si vous avez activé
session.bug_compat_42
et session.bug_compat_warn.
Note: Supprimé en PHP 5.4.0.
-
session.sid_length
entier -
session.sid_length vous permet de spécifier la ongueur
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 pour session.hash_func=0 (MD5) et session.hash_bits_per_character=4, session.hash_func=1 (SHA1) et session.hash_bits_per_character=6. Utiliser 26 pour session.hash_func=0 (MD5) et session.hash_bits_per_character=5. Utiliser 22 pour session.hash_func=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 depuis PHP 7.1.0.
-
session.sid_bits_per_character
integer -
session.sid_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 depuis 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).
Depuis PHP 5.3.0, 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: Disponible depuis PHP 5. Supprimer dans PHP 7.1.0.
-
session.hash_bits_per_character
entier -
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: Disponible depuis PHP 5. Supprimer dans PHP 7.1.0.
-
session.upload_progress.enabled
boolean - Active la surveillance de la progression d'un téléchargement, en peuplant la variable $_SESSION. Par défaut, vaut 1 (activé).
-
session.upload_progress.cleanup
boolean -
Nettoie les informations de progression dès que toutes les données POST
ont été lues (i.e. le téléchargement est terminé). Par défaut, vaut 1 (activé).
Note: Il est vivement recommandé de conserver active cette fonctionnalité.
-
session.upload_progress.prefix
string - Un préfixe utilisé pour la clé relative à la progression du téléchargement dans le tableau $_SESSION. Cette clé sera concaténé avec la valeur de $_POST[ini_get("session.upload_progress.name")] pour fournir un index unique. Par défaut, vaut "upload_progress_".
-
session.upload_progress.name
string - Le nom de la clé à utiliser dans le tableau $_SESSION pour y stocker les informations de progression. Voir aussi session.upload_progress.prefix. Si $_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 - Définit le nombre de fois où les informations de progression de téléchargement doivent être mises à jour. Peut être défini en octets (i.e. "mettre à jour les informations de progression de téléchargement tous les 100 octets), ou en pourcentage (i.e. "mettre à jour les informations de progression de téléchargement tous les 1% de réception du poids total du fichier"). Par défaut, vaut "1%".
-
session.upload_progress.min_freq
integer - Le délai minimal entre les mises à jour, en seconde. Par défaut, vaut "1" (une seconde).
-
session.lazy_write
boolean - 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é.
L'option register_globals influence le comportement des sessions, leur stockage et leur restauration.
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é.
Version en cache
22/12/2024 14:28:18 Cette version de la page est en cache (à la date du 22/12/2024 14:28:18) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-session.configuration.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.