Налаштування під час виконання

Поведінка цих функцій залежить від установок у php.ini.

Опції налаштування механізму сесій

ИмяПо умолчаниюМесто измененияСписок изменений
session.save_path""INI_ALL
session.name"PHPSESSID"INI_ALL
session.save_handler"files"INI_ALL
session.auto_start"0"INI_PERDIR
session.gc_probability"1"INI_ALL
session.gc_divisor"100"INI_ALL
session.gc_maxlifetime"1440"INI_ALL
session.serialize_handler"php"INI_ALL
session.cookie_lifetime"0"INI_ALL
session.cookie_path"/"INI_ALL
session.cookie_domain""INI_ALL
session.cookie_secure"0"INI_ALLДо PHP 7.2.0 значення за промовчанням було ""
session.cookie_httponly"0"INI_ALLДо PHP 7.2.0 значення за промовчанням було ""
session.cookie_samesite""INI_ALLДоступна з PHP 7.3.0.
session.use_strict_mode"0"INI_ALL
session.use_cookies"1"INI_ALL
session.use_only_cookies"1"INI_ALL
session.referer_check""INI_ALL
session.cache_limiter"nocache"INI_ALL
session.cache_expire"180"INI_ALL
session.use_trans_sid"0"INI_ALL
session.trans_sid_tags"a=href,area=href,frame=src,form="INI_ALLДоступна з PHP 7.1.0.
session.trans_sid_hosts$_SERVER['HTTP_HOST']INI_ALLДоступна з PHP 7.1.0.
session.sid_length"32"INI_ALLДоступна з PHP 7.1.0.
session.sid_bits_per_character"4"INI_ALLДоступна з PHP 7.1.0.
session.upload_progress.enabled"1"INI_PERDIR
session.upload_progress.cleanup"1"INI_PERDIR
session.upload_progress.prefix"upload_progress_"INI_PERDIR
session.upload_progress.name"PHP_SESSION_UPLOAD_PROGRESS"INI_PERDIR
session.upload_progress.freq"1%"INI_PERDIR
session.upload_progress.min_freq"1"INI_PERDIR
session.lazy_write"1"INI_ALL
session.hash_function"0"INI_ALLВидалено в PHP 7.1.0.
session.hash_bits_per_character"4"INI_ALLВидалено в PHP 7.1.0.
session.entropy_file""INI_ALLВидалено в PHP 7.1.0.
session.entropy_length"0"INI_ALLВидалено в PHP 7.1.0

Додаткова інформація та опис режимів INI_* дано у розділі «Місця встановлення параметрів конфігурації».

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

session.save_handlerstring

session.save_handler визначає ім'я оброблювача, який використовується для зберігання та вилучення даних, пов'язаних із сесією. За замовчуванням має значення files. Слід звернути увагу на те, що деякі модулі можуть зареєструвати власні обробники (save_handler). Поточні зареєстровані обробники відображаються в phpinfo()Смотрите такжеsession_set_save_handler()

session.save_pathstring

session.save_path визначає аргумент, який передається до обробника збереження. Якщо вибраний обробник файлів за промовчанням, аргумент містить шлях, яким створюватимуться файли. Дивіться також опис функції session_save_path()

Для цієї директиви можна поставити необов'язковий аргумент N, Який визначає глибину вкладених директорій, якими будуть розподілені файли сесій. Наприклад, встановлення значення '5;/tmp' може розташувати створений файл сесії таким шляхом: /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If. Щоб використати аргумент NСпочатку необхідно створити всі ці директорії. Для цього в директорії ext/session існує невеликий скрипт оболонки, який у Linux-системах називається 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 означає, що у файловій системі існує (2 ** session.sid_bits_per_character) ** 3 директорій, які можуть даремно займати багато дискового простору та індексних дескрипторів (inodes).

Значения больше 2 для аргументаN вказують, тільки якщо абсолютно впевнені, що розмір сайту відповідає такій вимогі.

session.namestring

session.name визначає назву сесії, яка буде використана як назва cookies. Може містити лише цифри та літери. За замовчуванням одно PHPSESSIDСмотрите также описание функцииsession_name()

session.auto_startbool

session.auto_start визначає, чи модуль сесії запускатиме сесію автоматично при старті. Значення за замовчуванням (отключено).

session.serialize_handlerstring

session.serialize_handler визначає ім'я оброблювача, який буде використаний для серіалізації/десеріалізації даних. Підтримується формат серіалізації PHP (найменування php_serialize), внутренний формат PHP (наименованиеphpиphp_binary) та WDDX (найменування wddx). WDDX доступний тільки в тому випадку, якщо PHP скомпільовано з підтримкою WDDX. . php_serialize використовує просту функцію серіалізації/десеріалізації для внутрішніх потреб і не має тих обмежень, які є у phpиphp_binary. Старі обробники серіалізації не можуть зберігати ні числові, ні рядкові індекси, що містять спеціальні символи ( и!) у $_SESSION. Используйтеphp_serialize, щоб уникнути помилок числових і рядкових індексів при завершенні скрипту. Значення за замовчуванням php

session.gc_probabilityint

session.gc_probability в поєднанні з session.gc_divisor визначає ймовірність запуску функції збирача сміття (gc, garbage collection). За замовчуванням дорівнює Смотрите подробнее вsession.gc_divisor

session.gc_divisorint

session.gc_divisor в поєднанні з session.gc_probability визначає можливість запуску функції збирача сміття (gc, garbage collection) при кожній ініціалізації сесії. Імовірність розраховується як gc_probability/gc_divisor, тобто 1/100 означає, що функція gc запускається в одному випадку зі ста, або 1% при кожному запиті . session.gc_divisorпо умолчанию имеет значение

session.gc_maxlifetimeint

session.gc_maxlifetime задає відстрочку часу в секундах, після якої дані будуть розглядатися як "сміття" та потенційно будуть видалені. Збір сміття може відбутися протягом старту сесії (залежно від значень session.gc_probability і session.gc_divisor). По умолчанию значение1440 (24 хвилини).

Зауваження: Якщо різні скрипти мають різні значення session.gc_maxlifetimeАле при цьому одні й ті ж місця для зберігання даних сесії, то скрипт з мінімальним значенням знищить усі дані. У такому разі слід використовувати цю директиву разом з session.save_path

session.referer_checkstring

session.referer_check містить підрядок, який можна використовувати під час перевірки HTTP Referer. Якщо клієнтом був надісланий referer і підрядок не був виявлений, то ідентифікатор сесії буде позначений як недійсний. За промовчанням використовується порожній рядок.

session.entropy_filestring

session.entropy_file містить шлях до ресурсу (файлу), що використовується як додаткове джерело ентропії у процесі створення ідентифікатора сесії. Наприклад, /dev/randomили/dev/urandom, які доступні на багатьох Unix-системах. Ця можливість також підтримується у Windows. Вказівка ​​ненульового значення в session.entropy_length наказує PHP використовувати як джерело ентропії Windows Random API.

Зауваження: Удалено в PHP 7.1.0session.entropy_fileимеет значение по умолчанию равное/dev/urandomили/dev/arandomякщо вони доступні.

session.entropy_lengthint

session.entropy_length визначає кількість байт, які будуть прочитані з вказаного вище файлу. За замовчуванням 32Удалено в PHP 7.1.0.

session.use_strict_modebool

session.use_strict_mode визначає, чи буде модуль використовувати режим суворого ідентифікатора (ID). Якщо від браузера отримано невизначений ID, браузеру буде надіслано новий ID. Таким чином, програми захищаються від фіксації сесії за допомогою суворого режиму. За замовчуванням (отключено).

Зауваження: Включениеsession.use_strict_mode є обов'язковим для спільної безпеки сесії. Всім сайтам рекомендується її вмикати. Дивіться приклади session_create_id()

Увага

Якщо користувальницький обробник сесії, зареєстрований за допомогою session_set_save_handler(), не реалізує SessionUpdateTimestampHandlerInterface::validateId()и не предоставляет callback-функциюvalidate_sidвідповідно, режим суворого ідентифікатора сесії буде відключений, незалежно від значення цієї директиви. Особливо зверніть увагу, що SessionHandler не реалізує SessionHandler::validateId()

session.use_cookiesbool

session.use_cookies визначає, чи модуль використовуватиме cookies для зберігання ідентифікатора сесії на стороні клієнта. За замовчуванням (включено).

session.use_only_cookiesbool

session.use_only_cookies визначає, чи модуль використовуватиме тільки cookies для зберігання сесії ідентифікатора на стороні клієнта. Увімкнення цього параметра запобігає атакам з використанням ідентифікатора сесії, розміщеного в URL. Значення за замовчуванням (включено).

session.cookie_lifetimeint

session.cookie_lifetime вказує час життя cookies, що надсилається до браузера клієнта, в секундах. Значення 0 означає, що cookies будуть валідними до закриття браузера. За замовчуванням одно Смотрите такжеsession_get_cookie_params() і session_set_cookie_params()

Зауваження: Позначка закінчення часу встановлюється по відношенню до серверного часу, який не обов'язково збігається з часом у браузері клієнта.

session.cookie_pathstring

session.cookie_path визначає встановлюваний шлях у сесійній cookie. За замовчуванням Смотрите такжеsession_get_cookie_params() і session_set_cookie_params()

session.cookie_domainstring

session.cookie_domain визначає встановлюваний домен у сесійній cookie. Відповідно до специфікації немає сенсу додатково вказувати ім'я хоста, що згенерував cookies. Дивіться також session_get_cookie_params() і session_set_cookie_params()

session.cookie_securebool

session.cookie_secure вказує, чи повинні cookie передаватися тільки через захищене з'єднання. Коли для цього налаштування встановлено значення on, сесії працюють лише з HTTPS-з'єднаннями. Якщо значення off, Сесії працюють і з HTTP-, і з HTTPS-з'єднаннями. Значення за замовчуванням offСмотрите также описание функцийsession_get_cookie_params() і session_set_cookie_params()

session.cookie_httponlybool

Позначка, за якою доступ до cookie з ідентифікатором сесії може бути отриманий тільки через протокол HTTP. Це означає, що cookie не буде доступна через скриптові мови, такі як JavaScript. Ця установка дозволяє ефективно захистити від XSS-атак (на жаль, ця функція підтримується не всіма браузерами).

session.cookie_samesitestring

Дозволяє серверам стверджувати, що cookie не має надсилатися разом із міжсайтовими запитами. Це твердження дозволяє браузерам користувачів знизити ризик витоку інформації з різних джерел та забезпечує певний захист від підробки запитів. Зауважте, що це підтримується не всіма браузерами. Порожнє значення означає, що атрибут cookie сайту не буде встановлений . LaxиStrict означають, що cookie не буде надіслано для кросдоменних POST-запитів; Lax відправить cookie для міждоменних GET-запитів, а Strict не робитиме цього.

session.cache_limiterstring

session.cache_limiter визначає режим кешування, який використовується для сторінок сесій. Може приймати одне з таких значень: nocache private private_no_expireилиpublicПо умолчаниюnocache. Детальніше про дані значення дивіться в session_cache_limiter()

session.cache_expireint

session.cache_expire вказує час життя кешованих сторінок сесій за хвилини, це ніяк не впливає на обмежувач nocache. За замовчуванням 180Смотрите такжеsession_cache_expire()

session.use_trans_sidbool

session.use_trans_sid вказує, чи використовується прозора підтримка sid чи ні. За замовчуванням (отключено).

Зауваження: Управління сесією на основі URL має додаткові ризики безпеки порівняно з керуванням на основі cookies. Як приклад можна згадати такі ситуації, коли користувачі можуть надіслати URL, що містить ідентифікатор активної сесії, своїм друзям електронною поштою або зберегти посилання з ідентифікатором в закладках і весь час відвідувати сайт з тим самим ідентифікатором. Починаючи з PHP 7.1.0, повний шлях URL, тобто https://php.net/обробляється "trans sid". Раніше PHP обробляв лише відносну URL-адресу. Перезапис цільового хоста задається session.trans_sid_hosts

session.trans_sid_tagsstring

session.trans_sid_tags задає теги HTML, що перезаписуються, для включення ідентифікатора сесії коли включена підтримка прозорих "sid". За замовчуванням a=href,area=href,frame=src,input=src,form= form - Спеціальних тег . <input hidden="session_id" name="session_name">добавляется в форму.

Зауваження: До PHP 7.1.0 для цього використовувався url_rewriter.tagsС PHP 7.1.0,fieldset більше не рахується за спеціальний тег.

session.trans_sid_hostsstring

session.trans_sid_hosts задає, які хости будуть перезаписані для включення ідентифікатора сесії, коли включено підтримку прозорих "sid". За замовчуванням $_SERVER['HTTP_HOST']. Декілька хостів можна вказати через кому. Не допускається вставляти прогалини між хостами. Так правильно: php.net,wiki.php.net,bugs.php.net

session.sid_lengthint

session.sid_length дозволяє вказати довжину ідентифікатора сесії. Це значення має бути в діапазоні 22-256. За замовчуванням 32. Якщо вам потрібна сумісність, вказуйте 32, 40 і т.д. Довші ідентифікатори складніше підібрати. Рекомендується використовувати довжину щонайменше 32.

Підказка

Заметки по совместимости: Используйте 32 дляsession.hash_function=0 (MD5) иsession.hash_bits_per_character= session.hash_function=1 (SHA1) иsession.hash_bits_per_character=6. 26 дляsession.hash_function=0 (MD5) иsession.hash_bits_per_character=5. 22 дляsession.hash_function=0 (MD5) иsession.hash_bits_per_character=6. Ви повинні налаштувати INI-налаштування таким чином, щоб ідентифікатор сесії складався як мінімум зі 128 біт. Не забудьте задати відповідні значення для session.sid_bits_per_characterінакше ваші ідентифікатори будуть слабкими.

Зауваження: Ця настройка з'явилася в PHP 7.1.0

session.sid_bits_per_characterint

session.sid_bits_per_character дозволяє встановити кількість біт в одному символі ідентифікатора сесії. Доступні значення '4' (0-9, a-f), '5' (0-9, a-v), і '6' (0-9, a-z, A-Z, "-", ","). 4. Чим більше біт, тим сильніший ідентифікатор сесії. У більшості оточень рекомендується 5.

Зауваження: Ця настройка з'явилася в PHP 7.1.0

session.hash_function mixed

session.hash_function дозволяє вказати алгоритм хешування, що використовується для створення ідентифікатора сесії. '0' означає MD5 (128 bits), а '1' означає SHA-1 (160 bits).

Можливо вказати будь-який з алгоритмів, передбачених модулем hash(если он доступен), наПриклад,sha512илиwhirlpool. Повний список алгоритмів можна отримати за допомогою функції hash_algos()

Зауваження: Видалено в PHP 7.1.0.

session.hash_bits_per_characterint

session.hash_bits_per_character дозволяє вказати скільки біт зберігається в кожному символі при перетворенні бінарного уявлення в щось більш легкочитане. Можливі значення: '4' (0-9, a-f), '5' (0-9, a-v) та '6' (0-9, a-z, A-Z, "-", ",").

Зауваження: Видалено в PHP 7.1.0.

session.upload_progress.enabledbool

Включає відстеження прогресу завантаження файлів та заповнення відповідної змінної в масиві $_SESSIONПо умолчанию 1, включено.

session.upload_progress.cleanupbool

Чистка інформації про прогрес завантаження файлів після завершення обробки POST-даних (тобто коли завантаження завершено). За замовчуванням 1 увімкнено.

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

session.upload_progress.prefixstring

Префікс, який використовується для ключа прогресу завантаження в масиві $_SESSION. Для забезпечення унікальності цей ключ буде приєднано до значення $_POST[ini_get("session.upload_progress.name")]. . За промовчанням дорівнює "upload_progress_".

session.upload_progress.namestring

Ім'я ключа, що використовується в масиві $_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_freqint

Мінімальна затримка між оновленнями в секундах. За промовчанням "1" (одна секунда).

session.lazy_writebool

Якщо session.lazy_write встановлено в 1, то дані сесії перезаписуватимуться тільки при їх зміні. За замовчуванням 1 увімкнено.

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