Мне интересно, можем ли мы объявить параметр session.gc_maxlifetime
в .htaccess
для одного конкретного проекта вместо всего веб-сервера?
Если да, то как мы можем это сделать? Как следующий код?
php_value session.gc_maxlifetime 2000
Я пробовал, и это не сработало, а также я создал файл php.ini
в том же каталоге моего проекта, и он тоже не работал.
Благодарю.
Да, 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 минут» .
Насколько я могу видеть, значение 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 прав доступа.