LoginSignup
12
11

More than 5 years have passed since last update.

(小ネタ)session.save_pathの調べ方

Posted at

はじめに

ログインして使うシステムについて、稼働サーバのデータベースをダンプして開発環境にインポートしたら、直前まで使ってたユーザが稼働サーバにはなくてUser Not Found、さらにログアウトすらできない、という状況になったことないですか?(今なりました)

開発環境の話なんで、サーバのセッション情報を破棄すればいいかーと進めたところでハマった、という投稿です。

環境

  • centos7
  • php7.2
  • apache2.4

↑をざくっとyumで作った環境です。

セッションファイルの保存場所

上記の環境をざくっと作ると、セッションはファイルで管理されます。破棄するのであればそのファイルを削除してしまえばOK。ということで、あとはその場所を調べるだけ。

確認箇所1:phpの設定

phpinfoに載ってます。例えばコマンドなら↓。

$ php -i | grep session.save_path

phpのiniで設定していれば上記で出力されて解決です。が、環境に書いたようにざくっと作るとsession.save_path => no value => no valueとなってわかりません。

確認箇所2:apacheの設定

php.iniのsession.save_pathの説明を読んでみたら、こんなことが書いてありました。

; RPM note : session directory must be owned by process owner
; for mod_php, see /etc/httpd/conf.d/php.conf
; for php-fpm, see /etc/php-fpm.d/*conf

そういえば、この環境だとmodで読み込んでた覚えが。ではphp.confの中身はというと、

# Apache specific PHP configuration options
# those can be override in each configured vhost
#
php_value session.save_handler "files"
php_value session.save_path    "/var/lib/php/session"
php_value soap.wsdl_cache_dir  "/var/lib/php/wsdlcache"

ありましたありました。php_value session.save_path "/var/lib/php/session"とあるので、/var/lib/php/sessionに格納されてることがわかりました。

おわりに

phpのセッション設定がapacheで上書きされているとは知らなかった、というハマりでした。前も同じようにハマったにも関わらず、覚えてなかったのでその戒めとして。

12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11