WordPressで$_SESSIONが使えない
ページ遷移のログを簡易的に$_SESSIONに保存して使いまわそうとしたら動作しなかったので調査。 環境: CentOS 6.5, nginx 1.6.2, php-fpm 5.4.33 initにフックしてsession_startしても、各ページでsession_idするたびに新たに新しいIDになって引き継げない。 function hoge_init() { if (!session_id()) { session_start(); } } add_action('init', 'hoge_init'); 調べてみるとPHPの設定でsession.cookie_pathの設定が「/tmp」になってた。 # less /etc/php.ini session.cookie_path = /tmp cookie_path はクッキーを保存するパス(URI)。一致したアクセスのみクッキーを使えるようになる。 cookie_pathを直したら動いた。 他のサーバーをみると「/」だったので、session.save_pathと勘違いして書き換えてたみたい。設定した覚えがないのでどっかのバージョンは/tmpに設定されるかも。 ちなみにsession.save_pathの設定は/etc/php-fpm.d/www.confに記載してある。 ちょっと深追いしてWordPressと_SESSIONの関係を調査。 WordPressはグローバル変数として_SESSIONを扱っていない。 Php session not working in wordpress page template - Stack Overflow Global Variables | WordPress Codex var_dump($GLOBALS); するとWordPressが生成したグローバル変数が出力される。 ということで$_SESSIONを使うのはやめて、 update_user_meta を使うことにした。 < Related P...