Объявление максимальной продолжительности сеанса в htaccess - PullRequest
4 голосов
/ 06 июня 2011

Мне интересно, можем ли мы объявить настройку session.gc_maxlifetime в .htaccess для одного конкретного проекта вместо целого веб-сервера?

Если так, как мы можем это сделать?Как и в следующем коде?

php_value session.gc_maxlifetime 2000

Я пробовал это, и это не сработало, а также я создал файл php.ini в том же каталоге моего проекта, и это нетоже не работает.

Спасибо.

Ответы [ 2 ]

14 голосов
/ 06 июня 2011

Да, session.gc_maxlifetime - это параметр PHP_INI_ALL, поэтому его можно переопределить в .htaccess:

php_value session.gc_maxlifetime 2000

Также убедитесь, что запись <Directory> в конфигурации Apache поддерживает переопределение:

AllowOverride Options

Также возможно, что вы неправильно поняли цель этой опции.Эта опция не будет устанавливать максимальное время жизни сеанса , она будет устанавливать количество времени, по истечении которого сборщик мусора будет очищать сеанс, если он недопустим.Это может быть определено многими факторами, включая время доступа, время модификации, другие параметры INI, такие как session.gc_probability и session.gc_divisor .

Если выЕсли вы хотите ограничить время жизни сеанса, используйте для этого подходящий механизм, описанный @Gumbo в Как мне истечь сеанс PHP через 30 минут .

2 голосов
/ 06 июня 2011

Насколько я вижу, значение gc_maxlifetime можно установить где угодно:

http://php.net/manual/en/session.configuration.php

http://www.php.net/manual/en/configuration.changes.modes.php

Так что вы также можете установить его через ini_set(...) в php-файле, который есть на всех ваших страницах.

В любом случае, я думаю, что ваш код в .htaccess также должен работать. Может быть, вы пропустили что-то еще, например

php_value session.save_path "/PATH/TO/SESSIONS"

где PATH / TO / SESSIONS - это путь к папке, где у вас есть права доступа 777.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...