D8インスタンスでCookieの有効期間を設定できません。ブラウザを閉じるとユーザーがログオフするように、これをゼロに設定したいと思います。
ini_set('session.cookie_lifetime', 0);
をsite/default/settings.phpファイルに追加しました。ファイルに以前のcookie_lifetime参照がありませんでした。行を追加しました。また、Drupalキャッシュをクリアして、私のChromeキャッシュをクリアしました。残念ながら、それは尊重されていません。ブラウザを閉じた後もセッションは持続します。
コードベース全体でini_set('session.cookie_lifetime', 200000);
を検索しましたが、サイトに存在しないようです。 DrupalがCookieの有効期間を設定している場所がわかりません。ルートのphp.iniファイルを介して設定を追加しようとしましたが、それはDrupalによって統治されています。
これは簡単なことなので、プラグインは避けたいです。皆様からのご連絡をお待ちしております。前もって感謝します。
セッションCookieオプションの場合、D8は設定の代わりにコンテナーパラメーターを使用します。 services.yml
と同じフォルダにsettings.php
ファイルを作成します。デフォルト値はdefault.services.yml
です。このファイルをservices.yml
にコピーして変更できます。
/ sites/default/services.yml:
parameters:
session.storage.options:
# Default ini options for sessions.
#
# Some distributions of Linux (most notably Debian) ship their PHP
# installations with garbage collection (gc) disabled. Since Drupal depends
# on PHP's garbage collection for clearing sessions, ensure that garbage
# collection occurs by using the most common settings.
# @default 1
gc_probability: 1
# @default 100
gc_divisor: 100
#
# Set session lifetime (in seconds), i.e. the time from the user's last
# visit to the active session may be deleted by the session garbage
# collector. When a session is deleted, authenticated users are logged out,
# and the contents of the user's $_SESSION variable is discarded.
# @default 200000
gc_maxlifetime: 200000
#
# Set session cookie lifetime (in seconds), i.e. the time from the session
# is created to the cookie expires, i.e. when the browser is expected to
# discard the cookie. The value 0 means "until the browser is closed".
# @default 2000000
cookie_lifetime: 2000000