Инсталиране/Конфигуриране
PHP Manual

Конфигурация по време на работа

Поведението на тези функции зависи от настройките в php.ini.

Настройки на сесия
Име По подразбиране Променяемо Дневник на промени
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_ALL  
session.gc_probability "1" PHP_INI_ALL  
session.gc_divisor "100" PHP_INI_ALL Налична от 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 Налична от PHP 4.0.4.
session.cookie_httponly "" PHP_INI_ALL Налична от PHP 5.2.0.
session.use_cookies "1" PHP_INI_ALL  
session.use_only_cookies "1" PHP_INI_ALL Налична от PHP 4.3.0.
session.referer_check "" PHP_INI_ALL  
session.entropy_file "" PHP_INI_ALL  
session.entropy_length "0" 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 в PHP <= 4.2.3. PHP_INI_PERDIR в PHP < 5. Налична от PHP 4.0.3.
session.bug_compat_42 "1" PHP_INI_ALL Налична от PHP 4.3.0. Премахната в PHP 6.0.0
session.bug_compat_warn "1" PHP_INI_ALL Налична от PHP 4.3.0. Премахната в PHP 6.0.0
session.hash_function "0" PHP_INI_ALL Налична от PHP 5.0.0.
session.hash_bits_per_character "4" PHP_INI_ALL Налична от PHP 5.0.0.
url_rewriter.tags "a=href,area=href,frame=src,form=,fieldset=" PHP_INI_ALL Налична от PHP 4.0.4.

За по-детайлна информация и дефинициите на константите PHP_INI_*, вижте Where a configuration setting may be set.

Системата за управление на сесиите поддържа няколко конфигурационни опции, които може да настроите в php.ini файла. Нека направим кратко резюме.

session.save_handler string
session.save_handler дефинира името на манипулатора, който се използва за съхраняване и извличане на информация, свързана със сесии. По подразбиране е files. Обърнете внимание, че отделните разширения могат да регистрират техни собствени манипулатори; регистрираните манипулатори могат да бъдат върнати на ниво инсталация, чрез обръщение към phpinfo(). Вж. също session_set_save_handler().
session.save_path string
session.save_path указва аргумента, който е изпратен към манипулатора на сесията. Ако изберете подразбиращия се файлов манипулатор, това ще бъде пътя (path), където ще се създават файловете. По подразбиране /tmp. Вж. също session_save_path().

Съществува незадължителен аргумент N към тази директива, който определя редица нива на директорията, на които може да се разположат сесийните файлове. Например, установяването в '5;/tmp' може да прекрати създаването на сесийни файлове в местоположение като /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If . За да използвате аргумента N, трябва да създадете всички тези директории предварително. За да направите това можете да използвате shell скрипта от ext/session. Нарича се mod_files.sh. Обърнете внимание, че ако се използва N и е по-голямо от 0, тогава автоматичното "почистване на боклука", няма да бъде осъществено, прегледайте някой от php.ini файловете за повече информация. Също, ако използвате N, се уверете, че ограждате session.save_path в кавички, защото разделителя (;) се използва за коментари в php.ini.

Предупреждение

Ако оставите стойността на тази настройка да е общодостъпната директория /tmp (по подразбиране), други потребители на сървъра биха могли да откраднат сесията ви, ако видят списъка на файловете в директорията.

Забележка: До PHP 4.3.6, Windows потребителите трябваше да променят тази променлива, за да използват функциите за сесии в PHP. Трябва да бъде определен валиден път, като например: c:/temp.

session.name string
session.name определя името на сесията, която се използва като име на бисквитката. То трябва да съдържа само буквено-цифрови знаци. По подразбиране стойността му е тази на PHPSESSID. Вж. също session_name().
session.auto_start boolean
session.auto_start определя дали сесийния модул стартира автоматично сесия при начало на заявка. По подразбиране е 0 (изключена).
session.serialize_handler string
session.serialize_handler дефинира името на манипулатора, който се използва за сериализиране/десериализиране на данните. Понастоящем се поддържат вътрешния PHP формат (името php или php_binary) и WDDX формата (името wddx). WDDX е достъпен само, ако PHP е компилиран с WDDX поддръжка. Стойността му по подразбиране е php.
session.gc_probability integer
session.gc_probability заедно с session.gc_divisor се използват за да се управлява вероятността процеса на "събиране на боклука" да се започне изпълнението си. Стойноста му по подразбиране е 1. Вж. session.gc_divisor за повече информация.
session.gc_divisor integer
session.gc_divisor заедно с session.gc_probability дефинират вероятността процеса на "събиране на боклука" да започва при инициализацията на всяка сесия. Вероятността се пресмята посредством gc_probability/gc_divisor, като например 1/100 означава, че има 1% шанс процеса на "събиране на боклука" да започне при всеяка заявка. Стойността по подразбиране на session.gc_divisor е 100.
session.gc_maxlifetime integer
session.gc_maxlifetime определя броя секунди, след които информацията ще бъде определена като 'боклук' и ще бъде почистена. Събирането на боклука започва при стартиране на сесията.

Забележка: Ако различни скриптове имат различни стойности на session.gc_maxlifetime, но споделят едно и също място за съхранение на сесийните данни, тогава скриптът с по-малката стойност ще си изчисти данните. В този случай, използвайте директивата заедно с session.save_path.

Забележка: Ако използвате подразбиращия се файлово-базиран сесиен манипулатор, вашата файлова система трябва да следи за времето на достъп (atime). Системата FAT на Windows не го прави, така че ще трябва да се насочите към друг начин, за да работите с събирането на боклука на вашата сесия, ако сте се сблъсквали с файловата система FAT или друга такава, където следенето на времето на достъп, не се поддържа. От PHP 4.2.3 се използва mtime (променлива дата) вместо atime. Така че, няма да имате проблеми с файловите системи, където atime следенето не се поддържа.

session.referer_check string
session.referer_check съдържа подниза, който искате да проверите във всяка HTTP заявка. Ако заявката бъде изпратена от клиента и подниза не бъде открит, вградения сесиен идентификатор ще бъде определен като невалиден. Стойността по подразбиране е празен низ.
session.entropy_file string
session.entropy_file връща пътя до външен ресурс (файл), който ще бъде използван като допълнителен entropy източник при създаването на сесийния идентификатор. Например /dev/random или /dev/urandom, които са достъпни на много Unix системи.
session.entropy_length integer
session.entropy_length указва количеството байтове, което ще бъде прочетено от файла посочен по-горе. Стойността по подразбиране е 0 (изключено).
session.use_cookies boolean
session.use_cookies определя дали модула ще използва бисквитки, за да съхранява сесийния идентификатор от страната на клиента. Стойността по подразбиране е 1 (включено) от PHP 6.0.
session.use_only_cookies boolean
session.use_only_cookies определя дали модула ще използва само бисквитки, за да съхранява сесийния идентификатор от страната на клиента. Включването на тази опция предпазва от атаки, предаващи сесийни идентификатори чрез URL адреси. Тази опция беше добавена в PHP 4.3.0.
session.cookie_lifetime integer
session.cookie_lifetime указва времето на валидност на бисквитката (в секунди) изпратена към браузъра. Стойността 0 означава "докато не се затвори браузера." Стойността по подразбиране е 0. Вж. също session_get_cookie_params() и session_set_cookie_params().

Забележка: Крайният timestamp е установен относително към сървърното време, което не е задължително да е същото като времето в браузера на клиента.

session.cookie_path string
session.cookie_path указва пътя, който се установява в session_cookie. Стойността по подразбиране е /. Вж. също session_get_cookie_params() и session_set_cookie_params().
session.cookie_domain string
session.cookie_domain указва домейна, който се установява за session_cookie. Стойност по подразбиране няма, така че за нея се взима името на хоста на сървъра, който е генерирал бисквитката, съгласно спецификацията за бисквитки. Вж. също session_get_cookie_params() и session_set_cookie_params().
session.cookie_secure boolean
session.cookie_secure определя дали бисквитките трябва да бъдат изпращани само чрез сигурни връзки. Стойността по подразбиране е off. Тази опция бе добавена в PHP 4.0.4. Вж. също session_get_cookie_params() и session_set_cookie_params().
session.cookie_httponly boolean
Отбелязва бисквитката като достъпна само по HTTP протокола. Това означава, че бисквитката няма да бъде достъпна от скриптови езици, като например JavaScript. Тази настройка може доста да помогне за ограничаване на кражбата на идентичност, чрез XSS атаки (въпреки, че не се поддържа от всички браузъри).
session.cache_limiter string
session.cache_limiter определя метода на управление на кеша, използван за страниците със сесии. (none/nocache/private/private_no_expire/public). Стойността по подразбиране е nocache. Вж. също session_cache_limiter().
session.cache_expire integer
session.cache_expire определя продължителността на живот на кеширани сесийни страници в минути, като това не влияе на nocache ограничителя. Стойността по подразбиране е 180. Вж. също session_cache_expire().
session.use_trans_sid boolean
session.use_trans_sid определя дали е включена или не прозрачната поддръжка на сесиен идентификатор. Стойността по подразбиране е 0 (изключено).

Забележка: За PHP 4.1.2 или по-малка, се добавя чрез компилирането на --enable-trans-sid. От PHP 4.2.0, "trans-sid" възможностите са винаги компилирани. URL базираното управление на сесии крие допълнителни рискове за сигурността, в сравнение с управление чрез бисквитки. Потребителите могат да изпратят URL адрес, съдържащ активен идентификатор на сесията на свои приятели по ел. поща или също така могат да съхраняват URL адрес, съдържащ сесиен идентификатор в отметките на браузъра и например винаги да посещават сайта ви с един и същ сесиен идентификатор.

session.bug_compat_42 boolean
PHP версиите 4.2.3 или по-стари имат неописана възможност/програмна грешка, която ви позволява да инициализирате сесийна променлива в глобална област на действие, въпреки че, register_globals е изключена. PHP 4.3.0 или по-ново ще ви предупреди, ако се използва тази възможност, или ако session.bug_compat_warn също е включена. Тази възможност/програмна грешка може да бъде изключена, чрез изключването на директивата.
session.bug_compat_warn boolean
PHP версии 4.2.3 или по-стари имат неописана възможност/програмна грешка, която ви позволява да инициализирате сесийна променлива в глобална област на действие, въпреки че, register_globals е изключена. PHP 4.3.0 или по-ново ще ви предупреди, ако се използва тази възможност посредством включването на session.bug_compat_42 и session.bug_compat_warn.
session.hash_function integer
session.hash_function ви позволява да определите алгоритъма на хеширане, използват за генериране на сесийни идентификатори. '0' означава MD5 (128 битов), а '1' означава SHA-1 (160 битов).

След въвеждането на PHP 6.0.0 също е възможно да се използва всеки от алгоритмите в пакета разширения за хеширане (ако е достъпен), като например sha512 или whirlpool. Пълен списък на поддържаните алгоритми може да бъде получен чрез функцията hash_algos().

Забележка: Това е въведено в PHP 5.

session.hash_bits_per_character integer
session.hash_bits_per_character ви позволява да определите колко битове се съхраняват във всеки знак, при преобразуването на двоичните хешови данни информация до нещо четимо. Възможните стойности са: '4' (0-9, a-f), '5' (0-9, a-v) и '6' (0-9, a-z, A-Z, "-", ",").

Забележка: Това бе въведено в PHP 5.

url_rewriter.tags string
url_rewriter.tags определя кои HTML тагове се пренаписват за включване на сесийния идентификатор, ако прозрачната му поддръжка е включена. Стойността по подразбиране е a=href,area=href,frame=src,input=src,form=fakeentry,fieldset=

Забележка: Ако искате код съвместим със strict HTML/XHTML, изтрийте атрибута form и използвайте таговете <fieldset> около вашите полета на формуляра.

Конфигурационните настройки на track_vars и register_globals влияят на метода на съхранение и извличане на сесийните променливи.

Забележка: От PHP 4.0.3, track_vars е винаги включено.


Инсталиране/Конфигуриране
PHP Manual