Настройка во время выполнения


Поведение этих функций зависит от установок в 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_*, обратитесь к разделу Где могут быть установлены параметры конфигурации.

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

session.save_handler string
session.save_handler определяет имя обработчика, который используется для хранения и извлечения данных, связанных с сессией. По умолчанию имеет значение files. Следует обратить внимание, что некоторые расширения могут зарегистрировать собственные обработчики (save_handler). Текущие зарегистрированные обработчики отображаются в phpinfo(). См. также session_set_save_handler().
session.save_path string
session.save_path определяет аргумент, который передается в обработчик сохранения. При установленном по умолчанию обработчике files, аргумент содержит путь, где будут создаваться файлы. См. также session_save_path().

У этой директивы также существует дополнительный аргумент 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.name определяет название сессии, используемое как название Cookies. Может содержать только цифры и буквы. По умолчанию равно PHPSESSID. См. также session_name().
session.auto_start boolean
session.auto_start определяет, будет ли модуль сессии запускать сессию автоматически при старте. Значение по умолчанию 0 (отключено).
session.serialize_handler string
session.serialize_handler определяет имя обработчика, который используется для сериализации / десериализации данных. Формат сериализации PHP (наименование php_serialize), внутренний формат PHP (наименование php и php_binary), а также поддерживается WDDX (наименование wddx). WDDX доступен только в том случае, если PHP скомпилирован с поддержкой WDDX. php_serialize доступен с версии PHP 5.5.4. php_serialize использует простую функцию сериализации / десериализации для внутренних нужд и не имеет тех же ограничений, что php и php_binary. Более старые обработчики сериализации не могут хранить ни числовые ни строковые индексы, содержащие специальные символы (| и !) в $_SESSION. Используйте php_serialize, чтобы обойти ошибки числовых и строковых индексов при завершении сктрипта. Значение по умолчанию: php.
session.gc_probability integer
session.gc_probability в сочетании с session.gc_divisor определяет вероятность запуска функции сборщика мусора (gc, garbage collection). По умолчанию равна 1. См. подробнее в session.gc_divisor.
session.gc_divisor integer
session.gc_divisor в сочетании с session.gc_probability вероятность запуска функции сборщика мусора (gc, garbage collection) при каждой инициализации сессии. Вероятность рассчитывается как gc_probability/gc_divisor, т.е. 1/100 означает, что функция gc запускается в одном случае из ста, или 1% при каждом запросе. session.gc_divisor по умолчанию имеет значение 100.
session.gc_maxlifetime integer
session.gc_maxlifetime задает отсрочку времени в секундах, после которой данные будут рассматриваться как "мусор" и потенциально будут удалены. Сбор мусора может произойти в течение старта сессии (в зависимости от значений session.gc_probability и session.gc_divisor).

Замечание:

Если разные скрипты имеют разные значения 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.referer_check содержит подстроку, которую можно использовать при проверке HTTP Referer. Если клиентом был послан referer и подстрока не была выявлена, то идентификатор сессии будет помечен как недействительный. По умолчанию используется пустая строка.
session.entropy_file string
session.entropy_file содержит путь к ресурсу (файлу), используемому как дополнительный источник энтропии в процессе создания идентификатора сессии. Например, /dev/random или /dev/urandom, которые доступны на многих Unix-системах. Эта возможность также поддерживается в Windows начиная с версии PHP 5.3.3. Указание ненулевого значения в session.entropy_length предписывает PHP использовать в качестве источника энтропии Windows Random API.

Замечание: Начиная с PHP 5.4.0 session.entropy_file имеет значение по умолчанию равное /dev/urandom или /dev/arandom, если они доступны. В PHP 5.3.0 эта директива по умолчанию пуста.

session.entropy_length integer
session.entropy_length определяет количество байт, которые будут прочитаны из вышеуказанного файла. По умолчанию 0 (отключено).
session.use_strict_mode boolean
session.use_strict_mode определяет будет ли модуль использовать реим строгого идентификатора (ID). Если от браузера получен неопределенный ID, то браузеру будет отправлен новый ID. Таким образом приложения защищаются от внедрения сессии с помощью строгого режима. Пол умолчанию 0 (отключено).
session.use_cookies boolean
session.use_cookies определяет, будет ли модуль использовать cookies для хранения идентификатора сессии на стороне клиента. По умолчанию 1 (включено).
session.use_only_cookies boolean
session.use_only_cookies определяет, будет ли модуль использовать только cookies для хранения идентификатора сессии на стороне клиента. Включение этого параметра предотвращает атаки с использованием идентификатора сессии, размещенного в URL. Добавлено в PHP 4.3.0. Значение по умолчанию 1 (включено) с версии PHP 5.3.0.
session.cookie_lifetime integer
session.cookie_lifetime указывает время жизни cookies, отправляемого в браузер клиента, в секундах. Значение 0 означает, что cookies будут валидны до закрытия браузера. По умолчанию равно 0. См. также session_get_cookie_params() и session_set_cookie_params().

Замечание:

Отметка окончания времени устанавливается по отношению к серверному времени, который не обязательно совпадает с временем в браузере клиента.

session.cookie_path string
session.cookie_path определяет устанавливаемый путь в сессионной cookie. По умолчанию /. См. также session_get_cookie_params() и session_set_cookie_params().
session.cookie_domain string
session.cookie_domain определяет устанавливаемый домен в сессионной cookie. В соответствии со спецификацией нет смысла дополнительно указывать имя хоста, который сгенерировал cookies. См. также session_get_cookie_params() и session_set_cookie_params().
session.cookie_secure boolean
session.cookie_secure указывает, должны ли cookies передаваться только через защищенное соединение. По умолчанию off. Добавлено в версии PHP 4.0.4. См. также session_get_cookie_params() и session_set_cookie_params().
session.cookie_httponly boolean
Отметка, согласно которой доступ к cookies может быть получен только через HTTP протокол. Это означает, что cookies не будут доступны через скриптовые языки, такие как JavaScript. Данная настройка позволяет эффективно защитить от XSS атак (к сожалению, эта функция поддерживается не всеми браузерами).
session.cache_limiter string
session.cache_limiter определяет метод контроля кэша, используемого для страниц сессий. Может принимать одно из следующих значений: 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 указывает, используется ли прозрачная поддержка sid или нет. По умолчанию 0 (отключено).

Замечание: Управление сессией на основе URL имеет дополнительные риски безопасности по сравнению с управлением на основе cookies. В качестве примера можно упомянуть такие ситуации, когда пользователи могут отправить 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 mixed
session.hash_function позволяет указать алгоритм хэширования, используемый для генерации идентификатора сессии. '0' означает MD5 (128 bits), а '1' означает SHA-1 (160 bits).

Начиная с PHP 5.3.0 также стало возможным указать любой из алгоритмов, предусмотренных расширением hash (если оно доступно), например 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-теги будут переписаны при включении идентификатора сессии при условии включенной поддержки transparent sid. По умолчанию a=href,area=href,frame=src,input=src,form=fakeentry,fieldset=

Замечание: Если необходимо строгое соответствие HTML/XHTML, то следует исключить элемент form из данного списка, а поля формы размещать в тэге <fieldset>.

session.upload_progress.enabled boolean
Включает отслеживание прогресса загрузки файлов и заполнение соответствующей переменной в массиве $_SESSION. По умолчанию равна 1, включена.
session.upload_progress.cleanup boolean
Чистка информации о прогрессе загрузки файлов по завершении обработки POST-данных (т.е. по завершении загрузки). По умолчанию равна 1, включена.

Замечание: Строго рекомендуется не отключать эту опцию.

session.upload_progress.prefix string
Префикс, используемый для ключа прогресса загрузки в массиве $_SESSION. Для обеспечения уникальности данный ключ будет присоединен к значению $_POST[ini_get("session.upload_progress.name")]. По умолчанию равен "upload_progress_".
session.upload_progress.name string
Имя ключа, используемого в массиве $_SESSION, для хранения информации о прогрессе. Смотрите также директиву session.upload_progress.prefix. Если элемент $_POST[ini_get("session.upload_progress.name")] не передан, прогресс загрузки данного файла не будет отслеживаться. По умолчанию равно "PHP_SESSION_UPLOAD_PROGRESS".
session.upload_progress.freq mixed
Определяет частоту обновления информации о прогрессе загрузки. Можно указать значение в байтах (т.е. "обновлять информацию о прогрессе каждые 100 байт") или в процентах (т.е. "обновлять информацию о прогрессе после получения 1% данных от размера файла"). По умолчанию равна "1%".
session.upload_progress.min_freq integer
Минимальная задержка между обновлениями, в секундах. По умолчанию равна "1" (одной секунде).

Настройки register_globals влияют на способ хранения и использования переменных сессии.

Прогресс загрузки файлов не будет обрабатываться, если не включена опция session.upload_progress.enabled и не установлена переменная $_POST[ini_get("session.upload_progress.name")]. Подробнее об этом смотрите в главе "Отслеживание прогресса загрузки файлов с помощью сессий".