Настройка Π²ΠΎ врСмя выполнСния

ПовСдСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ зависит ΠΎΡ‚ установок Π² Ρ„Π°ΠΉΠ»Π΅ 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 ΠΈ устарСла с PHP 8.4.0.
session.sid_bits_per_character "4" INI_ALL Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π±Ρ‹Π»Π° доступна с PHP 7.1.0 ΠΈ устарСла с PHP 8.4.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_handler string
session.save_handler опрСдСляСт имя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сохраняСт ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ сСссии. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Ρ€Π°Π²Π½ΠΎ files. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ свои ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ (save_handler). Π’Π΅ΠΊΡƒΡ‰ΠΈΠ΅ зарСгистрированныС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ функция phpinfo(). Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ session_set_save_handler().
session.save_path string
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.name string
session.name опрСдСляСт Π½Π°Π·Π²Π°Π½ΠΈΠ΅ сСссии, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ использовано ΠΊΠ°ΠΊ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ cookies. Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΈ Π±ΡƒΠΊΠ²Ρ‹. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” PHPSESSID. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ session_name().
session.auto_start bool
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 ΠΈ php_binary. Π‘Ρ‚Π°Ρ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ сСриализации Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½ΠΈ числовыС, Π½ΠΈ строковыС индСксы, содСрТащиС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы (| ΠΈ !) Π² $_SESSION. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ php_serialize, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ошибки числовых ΠΈ строковых индСксов ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ скрипта. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ php.
session.gc_probability int
Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° session.gc_probability Π² сочСтании с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ session.gc_divisor опрСдСляСт Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ запуска Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сборщика мусора (gc, garbage collection). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π½ΠΎ 1. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Ρ‹ 0. ОписаниС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ session.gc_divisor Π΄Π°Ρ‘Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.
session.gc_divisor int
Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° session.gc_divisor Π² сочСтании с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ session.gc_probability опрСдСляСт Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ запуска Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сборщика мусора (gc, garbage collection) ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сСссии. Π’Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ рассчитываСтся ΠΊΠ°ΠΊ gc_probability/gc_divisor, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ 1/100 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ функция gc запускаСтся Π² ΠΎΠ΄Π½ΠΎΠΌ случаС ΠΈΠ· ста, ΠΈΠ»ΠΈ 1% ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запросС. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ session.gc_divisor ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π½ΠΎ 100. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния большС 0.
session.gc_maxlifetime int
session.gc_maxlifetime Π·Π°Π΄Π°Ρ‘Ρ‚ отсрочку Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² сСкундах, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ "мусор" ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹. Π‘Π±ΠΎΡ€ мусора ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ старта сСссии (Π² зависимости ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ session.gc_probability ΠΈ session.gc_divisor). По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1440 (24 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹).

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Если Ρ€Π°Π·Π½Ρ‹Π΅ скрипты ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ значСния session.gc_maxlifetime, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ мСста для хранСния Π΄Π°Π½Π½Ρ‹Ρ… сСссии, Ρ‚ΠΎ скрипт с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ всС Π΄Π°Π½Π½Ρ‹Π΅. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ вмСстС с session.save_path.

session.referer_check string
session.referer_check содСрТит подстроку, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ HTTP Referer. Если ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ Π±Ρ‹Π» послан referer ΠΈ подстрока Π½Π΅ Π±Ρ‹Π»Π° выявлСна, Ρ‚ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сСссии Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ ΠΊΠ°ΠΊ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ пустая строка.
session.entropy_file string
session.entropy_file содСрТит ΠΏΡƒΡ‚ΡŒ ΠΊ рСсурсу (Ρ„Π°ΠΉΠ»Ρƒ), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌΡƒ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ источник энтропии Π² процСссС создания ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСссии. НапримСр, /dev/random ΠΈΠ»ΠΈ /dev/urandom, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ доступны Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… Unix-систСмах. Π­Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ поддСрТиваСтся Π² Windows. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ значСния Π² session.entropy_length прСдписываСт PHP ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС источника энтропии Windows Random API.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π£Π΄Π°Π»Π΅Π½ΠΎ Π² PHP 7.1.0. session.entropy_file ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π½ΠΎΠ΅ /dev/urandom ΠΈΠ»ΠΈ /dev/arandom, Ссли ΠΎΠ½ΠΈ доступны.

session.entropy_length int
session.entropy_length опрСдСляСт количСство Π±Π°ΠΉΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 32. Π£Π΄Π°Π»Π΅Π½ΠΎ Π² PHP 7.1.0.
session.use_strict_mode bool
session.use_strict_mode опрСдСляСт Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ строгого ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° (ID). Если ΠΎΡ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ ID, Ρ‚ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ID. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ прилоТСния Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ фиксации сСссии с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ строгого Ρ€Π΅ΠΆΠΈΠΌΠ°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 0 (ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ).

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ session.use_strict_mode являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ для ΠΎΠ±Ρ‰Π΅ΠΉ бСзопасности сСссии. ВсСм сайтам рСкомСндуСтся Π΅Ρ‘ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ session_create_id().

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ сСссии, зарСгистрированный с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ session_set_save_handler(), Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ SessionUpdateTimestampHandlerInterface::validateId() ΠΈ Π½Π΅ прСдоставляСт callback-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ validate_sid, соотвСтствСнно, Ρ€Π΅ΠΆΠΈΠΌ строгого ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСссии Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Ρ‘Π½, нСзависимо ΠΎΡ‚ значСния этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹. Особо ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ SessionHandler Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ SessionHandler::validateId().

session.use_cookies bool
session.use_cookies опрСдСляСт, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ cookies для хранСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСссии Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 1 (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ).
session.use_only_cookies bool
session.use_only_cookies опрСдСляСт, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ cookies для хранСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСссии Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π°Ρ‚Π°ΠΊΠΈ с ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² сСссии Π² URL-адрСсах. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 1 (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ).
session.cookie_lifetime int
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 bool
session.cookie_secure ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈ cookies ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½ΠΎΠ΅ соСдинСниС. Когда для этой настройки установлСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ on, сСссии Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с HTTPS-соСдинСниями. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ off, Ρ‚ΠΎ сСссии Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ с HTTP-, ΠΈ с HTTPS-соСдинСниями. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ off. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ session_get_cookie_params() ΠΈ session_set_cookie_params().
session.cookie_httponly bool
ΠžΡ‚ΠΌΠ΅Ρ‚ΠΊΠ°, согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ доступ ΠΊ cookie с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ сСссии ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· HTTP-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ». Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ cookie Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ доступна Ρ‡Π΅Ρ€Π΅Π· скриптовыС языки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ JavaScript. Данная настройка позволяСт эффСктивно Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚ XSS-Π°Ρ‚Π°ΠΊ (ΠΊ соТалСнию, эта функция поддСрТиваСтся Π½Π΅ всСми Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ).
session.cookie_samesite string
ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ сСрвСрам ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ cookie Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ вмСстС с мСТсайтовыми запросами. Π­Ρ‚ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ позволяСт Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ риск ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… источников ΠΈ обСспСчиваСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ ΠΏΠΎΠ΄Π΄Π΅Π»ΠΊΠΈ кросс-Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Ρ… запросов. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π½Π΅ всС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹. ΠŸΡƒΡΡ‚ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ cookie сайта Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ установлСн. Lax ΠΈ Strict ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ cookie Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ для кросс-Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Ρ… POST-запросов; Lax ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ cookie для ΠΌΠ΅ΠΆΠ΄ΠΎΠΌΠ΅Π½Π½Ρ‹Ρ… GET-запросов, Π° Strict Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ этого Π΄Π΅Π»Π°Ρ‚ΡŒ.
session.cache_limiter string
session.cache_limiter опрСдСляСт Ρ€Π΅ΠΆΠΈΠΌ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для страниц сСссий. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: nocache, private, private_no_expire ΠΈΠ»ΠΈ public. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ nocache. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π΄Π°Π½Π½Ρ‹Ρ… значСниях смотритС Π² session_cache_limiter().
session.cache_expire int
session.cache_expire ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… страниц сСссий Π² ΠΌΠΈΠ½ΡƒΡ‚Π°Ρ…, это Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ влияСт Π½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ nocache. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 180. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ session_cache_expire().
session.use_trans_sid bool
session.use_trans_sid ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π»ΠΈ прозрачная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° sid ΠΈΠ»ΠΈ Π½Π΅Ρ‚. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 0 (ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ).

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСссиСй Π½Π° основС URL ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ риски бСзопасности ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π° основС cookies. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ситуации, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ URL, содСрТащий ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ сСссии, своим Π΄Ρ€ΡƒΠ·ΡŒΡΠΌ ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅ ΠΈΠ»ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ссылку с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ Π² Π·Π°ΠΊΠ»Π°Π΄ΠΊΠ°Ρ… ΠΈ всС врСмя ΠΏΠΎΡΠ΅Ρ‰Π°Ρ‚ΡŒ сайт с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ. Начиная с PHP 7.1.0, ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ URL, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ https://php.net/, обрабатываСтся "trans sid". РаньшС PHP ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ URL-адрСса. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ хоста задаётся session.trans_sid_hosts.

session.trans_sid_tags string
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_hosts string
session.trans_sid_hosts Π·Π°Π΄Π°Ρ‘Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ хосты Π±ΡƒΠ΄ΡƒΡ‚ пСрСзаписаны для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСссии, ΠΊΠΎΠ³Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Ρ… "sid". По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ $_SERVER['HTTP_HOST']. НСсколько хостов ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ. НС допускаСтся Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ хостами. Π’Π°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ: php.net,wiki.php.net,bugs.php.net.
session.sid_length int
session.sid_length позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сСссии. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 22-256. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 32. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ 32, 40 ΠΈ Ρ‚. Π΄. Π‘ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ слоТнСС ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ. РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 32.
Подсказка

Π—Π°ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΏΠΎ совмСстимости: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ 32 для session.hash_function=0 (MD5) ΠΈ session.hash_bits_per_character=4, 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_character int
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_character int
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.enabled bool
Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ отслСТиваниС прогрСсса Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² массивС $_SESSION. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 1, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ.
session.upload_progress.cleanup bool
Чистка ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ прогрСссС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ 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 int
Минимальная Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ обновлСниями, Π² сСкундах. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ "1" (ΠΎΠ΄Π½Π° сСкунда).
session.lazy_write bool
Если session.lazy_write установлСн Π² 1, Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ сСссии Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 1, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ.

ΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ, Ссли Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° опция session.upload_progress.enabled ΠΈ Π½Π΅ установлСна пСрСмСнная $_POST[ini_get("session.upload_progress.name")]. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом смотритС Π² Π³Π»Π°Π²Π΅ "ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ прогрСсса Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сСссий".

οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 11 notes

up
38
Walerian Walawski - https://w87.eu/ ΒΆ
2 years ago
Can't find mod_files.sh? Here it is:
β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬β–¬

#!/usr/bin/env bash

if [[ "$2" = "" ]] || [[ "$3" = "" ]]; then
       echo "Usage: $0 BASE_DIRECTORY DEPTH BITS_PER_CHAR"
       echo "BASE_DIRECTORY will be created if it doesn't exist"
       echo "DEPTH must be an integer number >0"
       echo "BITS_PER_CHAR(session.sid_bits_per_character) should be one of 4, 5, or 6."
       # http://php.net/manual/en/session.configuration.php#ini.session.sid-bits-per-character
       exit 1
fi

if [[ "$2" = "0" ]] && [[ ! "$4" = "recurse" ]]; then
       echo "Can't create a directory tree with depth of 0, exiting."
fi

if [[ "$2" = "0" ]]; then
       exit 0
fi

directory="$1"
depth="$2"
bitsperchar="$3"

hash_chars="0 1 2 3 4 5 6 7 8 9 a b c d e f"

if [[ "$bitsperchar" -ge "5" ]]; then
       hash_chars="$hash_chars g h i j k l m n o p q r s t u v"
fi

if [[ "$bitsperchar" -ge "6" ]]; then
       hash_chars="$hash_chars w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z - ,"
fi

while [[ -d $directory ]] && [[ $( ls $directory ) ]]; do
       echo "Directory $directory is not empty! What would you like to do?"

       options="\"Delete directory contents\" \"Choose another directory\" \"Quit\""
       eval set $options
       select opt in "$@"; do

              if [[ $opt = "Delete directory contents" ]]; then
                     echo "Deleting $directory contents... "
                     rm -rf $directory/*
              elif [[ $opt = "Choose another directory" ]]; then
                     echo "Which directory would you like to choose?"
                     read directory
              elif [[ $opt = "Quit" ]]; then
                     exit 0
              fi

              break;
       done
done

if [[ ! -d $directory ]]; then
       mkdir -p $directory
fi

echo "Creating session path in $directory with a depth of $depth for session.sid_bits_per_character = $bitsperchar"

for i in $hash_chars; do
       newpath="$directory/$i"
       mkdir $newpath || exit 1
       bash $0 $newpath `expr $depth - 1` $bitsperchar recurse
done
up
78
Christopher Kramer ΒΆ
11 years ago
On debian (based) systems, changing session.gc_maxlifetime at runtime has no real effect. Debian disables PHP's own garbage collector by setting session.gc_probability=0. Instead it has a cronjob running every 30 minutes (see /etc/cron.d/php5) that cleans up old sessions. This cronjob basically looks into your php.ini and uses the value of session.gc_maxlifetime there to decide which sessions to clean (see /usr/lib/php5/maxlifetime).

You can adjust the global value in your php.ini (usually /etc/php5/apache2/php.ini). Or you can change the session.save_path so debian's cronjob will not clean up your sessions anymore. Then you need to either do your own garbage collection with your own cronjob or enable PHP's garbage collection (php then needs sufficient privileges on the save_path).

Why does Debian not use PHP's garbarage collection?
For security reasons, they store session data in a place (/var/lib/php5) with very stringent permissions. With the sticky bit set, only root is allowed to rename or delete files there, so PHP itself cannot clean up old session data. See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=267720 .
up
7
zch1 ΒΆ
2 years ago
the pwd should be urlencode when it contanis special chars.
eg: 

save_handler:redis
save_path: tcp://127.0.0.1:6739?auth=urlencode('xxxxx')
up
6
theking2(at)king.ma ΒΆ
2 years ago
To prevent mitm-attacks you want to make sure the session cookie is only transmitted over a secure channel prefix it with the magic string "__Secure-". [1]

Like :
<?php
    session_start( [ 'name' => '__Secure-Session-ID' ] );
?>

The cookie will not be available on non-secure channel.

(Putting this note it here probably goes unnoticed because of all the noise)

[1]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#attributes
up
3
theking2(at)king.ma ΒΆ
2 years ago
Please be careful with the 'sid_length' when setting 'sid_bits_per_character' to six. 

Setting sid_bits_per_character to 6 includes the character "," to the list of possible characters. A comma will be escaped and transmitted as "%2C" (tested on Chromium Version 119.0.6045.199) adding two extra characters for each comma to the SESSION_ID.
up
19
GreenReaper ΒΆ
11 years ago
We found a session.save_path depth of 3 led to excessive wastage of inodes and in fact disk space in storing the directory tree. dir_indexes option on ext2/3/4 makes larger directories more feasible anyway, so we decided to move to a depth of 2 instead.

It took a little puzzling to figure out how to move the existing PHP sessions up one directory tree, but we ended up running this in the root sessions directory:

#!/bin/sh
for a in ./* ; do
    cd ./$a
    pwd
    for b in ./* ; do
      cd ./$b
      pwd
      # Move existing sessions out
      find ./* -xdev -type f -print0 | xargs -0 mv -t .
      # Remove subdirectories
      find ./* -xdev -type d -print0 | xargs -0 rmdir
      cd ..
  done
  cd ..
done

This script may not be the best way to do it, but it got the job done fast. You can modify it for different depths by adding or removing "for" loops.

The documentation gives a depth of 5 as an example, but five is right out. If you're going beyond 2, you're at the scale where you may want to to look at a large memcached or redis instance instead.
up
17
info at thimbleopensource dot com ΒΆ
10 years ago
I found out that if you need to set custom session settings, you only need to do it once when session starts. Then session maintains its settings, even if you use ini_set and change them, original session still will use it's original setting until it expires.

Just thought it might be useful to someone.
up
8
hassankhodadadeh at NOSPAM dot gmail dot com ΒΆ
14 years ago
max value for "session.gc_maxlifetime" is 65535. values bigger than this may cause  php session stops working.
up
4
li-lingjie ΒΆ
8 years ago
Use SessionHandlerInterface interface Custom redis session, found the following:

Use ini_set ('session.save_path', "tcp: //127.0.0.1: 6379? Auth = password"); will be reported:

PHP Fatal error: session_start (): Failed to initialize storage module: user (path: tcp: //127.0.0.1: 6379? Auth = password);

Using session_save_path ("tcp: //127.0.0.1: 6379? Auth = password") will not
up
3
boan dot web at outlook dot com ΒΆ
7 years ago
session.cache_limiter may be empty string to disable cache headers entirely. 

Quote:
> Setting the cache limiter to '' will turn off automatic sending of cache headers entirely.

http://php.net/manual/en/function.session-cache-limiter.php
up
0
00 at f00n dot com ΒΆ
17 years ago
After having many problems with garbage collection not clearing my sessions I have resolved it through the following.

First I found this in the php.ini (not something i noticed as i use phpinfo(); to see my hosting ini).

; NOTE: If you are using the subdirectory option for storing session files
;       (see session.save_path above), then garbage collection does *not*
;       happen automatically.  You will need to do your own garbage

; collection through a shell script, cron entry, or some other method. ;       For example, the following script would is the equivalent of
;       setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
;          cd /path/to/sessions; find -cmin +24 | xargs rm

With this is mind there are options.

1. dont use a custom save_path.
** This means if your isp hasnt defaulted your session temp to something safer than install default or you are using a shared directory for session data then you would be wise to use named sessions to keep your session from being viewable in other people's scripts.  Creating a unique_id name for this is the common method. **

2. use your custom folder but write a garbage collection script.

3. use a custom handler and a database