PHPセッションの設定確認
Oauthのstate用にセッションIDをハッシュ化して開発している時に本番環境でうまく動かなかったので、一つずつ原因を紐解いていったときの覚書。 環境: CentOS Stream 8, nginx 1.20.2, PHP 7.4.19, WordPress 5.9.2 Android上のChromeで動作確認している。 デバイスの開発者向けオプションを設定する | Android デベロッパー | Android Developers Remote debug Android devices - Chrome Developers PHPセッション設定 まずはPHPのセッション関連設定を確認する。 セッションIDの置き場所の確認 # less /etc/php-fpm.d/www.conf php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session セッションのタイムアウト時間設定の確認 # php -i | grep session session.cookie_lifetime => 0 => 0 session.gc_maxlifetime => 1440 => 1440 session.name => PHPSESSID => PHPSESSID cookie_lifetime=0の場合はブラウザが閉じるまでセッションを維持する。 gc_maxlifetime=1440は秒数。24分経過するとガベージコレクションで(一定確率で)消去される。 念のためphpinfo()をどこかに設置して、php-fpm経由のphpinfo()を表示して確認する。 セッションID生成の動作確認 PHPセッションの基本的な動作は公式サイトを参考に。 PHP: 基本的な使用法 - Manual session_start()したときに生成したセッションIDを確認する。 ChromeブラウザのDeveloper Toolsの「Network→(リクエストしたパス)→ Cookie」を見る。session_start()するパスではPHPSESSIDが生成されているはず。 Name: PHPSESSID Val