Поведение этих функций зависит от установок в 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.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.trans_sid_tags | "a=href,area=href,frame=src,form=" | PHP_INI_ALL | Доступна с PHP 7.1.0. |
session.trans_sid_hosts | $_SERVER['HTTP_HOST'] | PHP_INI_ALL | Доступна с PHP 7.1.0. |
session.sid_length | "32" | PHP_INI_ALL | Доступна с PHP 7.1.0. |
session.sid_bits_per_character | "5" | PHP_INI_ALL | Доступна с PHP 7.1.0. |
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 | Доступна с 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 | Доступна с 5.4.0. |
session.upload_progress.min_freq | "1" | PHP_INI_PERDIR | Доступна с PHP 5.4.0. |
session.lazy_write | "1" | PHP_INI_ALL | Доступна с PHP 7.0.0. |
url_rewriter.tags | "a=href,area=href,frame=src,form=" | PHP_INI_ALL | Доступна с 4.0.4. С PHP 7.1.0, эта настройка сессиями больше не используется. |
session.hash_function | "0" | PHP_INI_ALL | Доступна с PHP 5.0.0. Удалена в PHP 7.1.0. |
session.hash_bits_per_character | "4" | PHP_INI_ALL | Доступна с PHP 5.0.0. Удалена в PHP 7.1.0. |
session.entropy_file | "" | PHP_INI_ALL | Удалена в PHP 7.1.0. |
session.entropy_length | "0" | PHP_INI_ALL | Удалена в PHP 7.1.0 |
session.bug_compat_42 | "1" | PHP_INI_ALL | Доступна c PHP 4.3.0. Удалена в PHP 5.4.0. |
session.bug_compat_warn | "1" | PHP_INI_ALL | Доступна c PHP 4.3.0. Удалена в 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.
session.referer_check
string
session.entropy_file
string
Замечание: Удалено в PHP 7.1.0. Начиная с 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.use_strict_mode является обязательным для общей безопасности сессии. Всем сайтам рекомендуется ее включать. Смотри примеры session_create_id().
Замечание: Отметка окончания времени устанавливается по отношению к серверному времени, который не обязательно совпадает с временем в браузере клиента.
session.cache_limiter
string
session.cache_expire
integer
session.use_trans_sid
boolean
Замечание: Управление сессией на основе URL имеет дополнительные риски безопасности по сравнению с управлением на основе cookies. В качестве примера можно упомянуть такие ситуации, когда пользователи могут отправить URL, содержащий идентификатор активной сессии своим друзьям по электронной почте или сохранить ссылку с идентификатором в закладках и все время посещать сайт с одним и тем же идентификатором. С PHP 7.1.0, полный путь URL, т.е. https://php.net/, обрабатывается "trans sid". Предыдущие обработчики . Ранее обрабатывался только относительный путь URL. Перезапись целевого хоста задается session.trans_sid_hosts.
Замечание: До PHP 7.1.0 для этого использовался, url_rewriter.tags. С PHP 7.1.0, fieldset больше не считается за специальный тэг.
session.trans_sid_hosts
string
session.bug_compat_42
boolean
Замечание: Удалено в PHP 5.4.0.
session.bug_compat_warn
boolean
Замечание: Удалено в PHP 5.4.0.
session.sid_length
integer
Заметки по совместимости: Используйте 32 для session.hash_func=0 (MD5) и session.hash_bits_per_character=4, session.hash_func=1 (SHA1) и session.hash_bits_per_character=6. 26 для session.hash_func=0 (MD5) и session.hash_bits_per_character=5. 22 для session.hash_func=0 (MD5) и session.hash_bits_per_character=6. Вы должны сконфигурировать INI-настройки таким образом, чтобы идентификатор сессии состоял как минимум из 128 бит. Не забудьте задать соответствующие значения для session.sid_bits_per_character, иначе ваши идентификаторы будут слабыми.
Замечание: Эта настройка появилась в PHP 7.1.0.
session.sid_bits_per_character
integer
Замечание: Эта настройка появилась в PHP 7.1.0.
session.hash_function
mixed
Начиная с PHP 5.3.0 также стало возможным указать любой из алгоритмов, предусмотренных расширением hash (если оно доступно), например sha512 или whirlpool. Полный список алгоритмов может быть получен с помощью функции hash_algos().
Замечание: Эта опция была добавлена в PHP 5. Удалена в PHP 7.1.0.
session.hash_bits_per_character
integer
Замечание: Эта опция была добавлена в PHP 5. Удалена в PHP 7.1.0.
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
session.lazy_write
boolean
Настройки register_globals влияют на способ хранения и использования переменных сессии.
Прогресс загрузки файлов не будет обрабатываться, если не включена опция session.upload_progress.enabled и не установлена переменная $_POST[ini_get("session.upload_progress.name")]. Подробнее об этом смотрите в главе "Отслеживание прогресса загрузки файлов с помощью сессий".