Поведение этих функций зависит от установок в 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_PERDIR | |
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_strict_mode | "0" | PHP_INI_ALL | Доступна с PHP 5.5.2. |
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 5.4.0. |
session.bug_compat_warn | "1" | PHP_INI_ALL | Доступна с PHP 4.3.0. Упразднена в PHP 5.4.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. |
session.upload_progress.enabled | "1" | PHP_INI_PERDIR | Доступна с PHP 5.4.0. |
session.upload_progress.cleanup | "1" | PHP_INI_PERDIR | Доступна с PHP 5.4.0. |
session.upload_progress.prefix | "upload_progress_" | PHP_INI_PERDIR | Доступна с PHP 5.4.0. |
session.upload_progress.name | "PHP_SESSION_UPLOAD_PROGRESS" | PHP_INI_PERDIR | Доступна с PHP 5.4.0. |
session.upload_progress.freq | "1%" | PHP_INI_PERDIR | Доступна с PHP 5.4.0. |
session.upload_progress.min_freq | "1" | PHP_INI_PERDIR | Доступна с PHP 5.4.0. |
Система управления сессиями поддерживает ряд опций, которые могут быть указаны в файле php.ini. Ниже приводится краткий обзор.
session.save_handler
string
session.save_path
string
У этой директивы также существует дополнительный аргумент N, определяющий глубину размещения файлов сессии относительно указанной директории. Например, указание '5;/tmp' может в конечном итоге привести к такому размещению файла сессии: /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If . Для того, чтобы использовать аргумент N, необходимо предварительно создать все эти директории. Помочь в этом может небольшой скрипт, расположенный в ext/session. Версия для bash называется mod_files.sh, а Windows-версия - mod_files.bat. Также следует учитывать, что если N определен и больше 0, то автоматическая сборка мусора не выполняется, подробнее см. информацию в файле php.ini. Если используется N, необходимо также удостовериться, что значение session.save_path указано в кавычках, поскольку разделитель (;) в php.ini используется как знак комментария.
Модуль хранения файлов создает файлы с правами 600 по умолчанию. Это можно изменить с помощью необязательного аргумента MODE: N;MODE;/path, где MODE - восьмиричное представление режима доступа к файлу. Установка MODE не затрагивает umask.
Если установить в качестве значения общедоступную для чтения директорию, например, /tmp (по умолчанию), остальные пользователи сервера получат возможность перехватить сессию пользователя, получив список файлов такой директории.
При использовании необязательного аргумента N уровня директорий, как описано выше, учтите, что использование значений выше чем 1 или 2 недопустимо для большинства сайтов, так как требуется очень большое количество директорий: например, значение 3 приводит к 64^3 директориям в файловой системе, которые приводят к огромным потерям места и inode.
Only use N greater than 2 if you are absolutely certain that your site is large enough to require it.
Замечание: До версии PHP 4.3.6, для использования механизма сессий пользователям Windows приходилось изменять эту переменную. Необходимо было указать корректный путь, например, такой: c:/temp.
session.name
string
session.auto_start
boolean
session.serialize_handler
string
session.gc_probability
integer
session.gc_divisor
integer
session.gc_maxlifetime
integer
Замечание:
Если разные скрипты имеют разные значения session.gc_maxlifetime, но при этом одни и те же места для хранения данных сессии, то скрипт с минимальным значением уничтожит все данные. В таком случае следует использовать эту директиву вместе с session.save_path.
Замечание: Если по умолчанию используется обработчик file, файловая система должна отслеживать время доступа (access time, atime). Windows FAT этого не позволяет, при использовании данной файловой системы (или любой другой без поддержки отслеживания времени доступа) придется разрабатывать собственный способ сборки сессионного мусора. Начиная с версии PHP 4.2.3 используется mtime (modified date, дата изменений) вместо atime. В этом случае поддержка файловой системой atime не требуется.
session.referer_check
string
session.entropy_file
string
Замечание: Начиная с PHP 5.4.0 session.entropy_file имеет значение по умолчанию равное /dev/urandom или /dev/arandom, если они доступны. В PHP 5.3.0 эта директива по умолчанию пуста.
session.entropy_length
integer
session.use_strict_mode
boolean
Замечание:
Отметка окончания времени устанавливается по отношению к серверному времени, который не обязательно совпадает с временем в браузере клиента.
session.cache_limiter
string
session.cache_expire
integer
session.use_trans_sid
boolean
Замечание: Управление сессией на основе URL имеет дополнительные риски безопасности по сравнению с управлением на основе cookies. В качестве примера можно упомянуть такие ситуации, когда пользователи могут отправить URL, содержащий идентификатор активной сессии своим друзьям по электронной почте или сохранить ссылку с идентификатором в закладках и все время посещать сайт с одним и тем же идентификатором.
session.bug_compat_42
boolean
session.bug_compat_warn
boolean
session.hash_function
mixed
Начиная с PHP 5.3.0 также стало возможным указать любой из алгоритмов, предусмотренных расширением hash (если оно доступно), например sha512 или whirlpool. Полный список алгоритмов может быть получен с помощью функции hash_algos().
Замечание:
Эта опция была добавлена в PHP 5.
session.hash_bits_per_character
integer
Замечание:
Эта опция была добавлена в PHP 5.
Замечание: Если необходимо строгое соответствие HTML/XHTML, то следует исключить элемент form из данного списка, а поля формы размещать в тэге <fieldset>.
session.upload_progress.enabled
boolean
session.upload_progress.cleanup
boolean
Замечание: Строго рекомендуется не отключать эту опцию.
session.upload_progress.prefix
string
session.upload_progress.name
string
session.upload_progress.freq
mixed
session.upload_progress.min_freq
integer
Настройки register_globals влияют на способ хранения и использования переменных сессии.
Прогресс загрузки файлов не будет обрабатываться, если не включена опция session.upload_progress.enabled и не установлена переменная $_POST[ini_get("session.upload_progress.name")]. Подробнее об этом смотрите в главе "Отслеживание прогресса загрузки файлов с помощью сессий".