前提・実現したいこと
現在Laravelを利用してサービスを開発しており、キャッシュにAWS Elasticacheのmemcachedを利用しています。
Laravelでmemcachedに保存したセッションデータをもう一台別のサーバーからmemcachedへ接続してセッション情報を取得しようとしているのですが、データが空になってしまって取得することができません。
複数台のサーバーでセッション情報を共有できる状態にしたいです。
現在のサーバー構成
AWS EC2 2台 (ubuntu) サーバー1: Laravelで動かしているアプリケーション サーバー2: PHPのみで動かしているアプリケーション AWS Elasticache memcached 1台 上記EC2 1,2からこちらにアクセスするように設定しています
該当のソースコード
PHP
1<サーバー1:Laravel側> 2確認用でsessiontestというキーで123を保存 3session()->put('sessiontest', '123'); 4 5memcachedに保存された値を確認 6$ /usr/share/memcached/scripts/memcached-tool xxx.xxx.cfg.apne1.cache.amazonaws.com:11211 dump 7-------------------------------------------------------- 8add _cache:M5otij3Oa7WmFONqcBKEq18pUc7W5EfzyvJn0p8o 0 1625540590 228 9a:4:{s:6:"_token";s:40:"OTi6n7pfix2wvc6LMo20KDmkPIECElOJdXEKPMik";s:9:"_previous";a:1:{s:3:"url";s:41:"https://xxxxxx";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}s:11:"sessiontest";s:3:"123";} 10-------------------------------------------------------- 11"sessiontest":"123"が保存できていることを確認 12 13<サーバー2: PHPのみ> 14session_start(); 15$sessiontest = $_SESSION['sessiontest']; //ここでNULLになる
発生している問題・エラーメッセージ
memcachedには保存されているのにセッション情報がNULLになってしまい取得することができない。
試したこと
Laravel側でLaravelの機能を利用しないPHPの書き方でセッション情報を保存してみましたが同じでした。
PHP
1<サーバー1:Laravel側> 2確認用でsessiontest2というキーでtestvalを保存 3session_start(); 4$_SESSION['sessiontest2'] = 'testval'; 5 6memcachedに保存された値を確認 7$ /usr/share/memcached/scripts/memcached-tool xxx.xxx.cfg.apne1.cache.amazonaws.com:11211 dump 8---------------------------------------------------------------- 9add memc.sess.key.k1kdt5iqeoim0vcb3sfb1ekrr4 0 1625536072 27 10sessiontest2|s:7:"testval"; 11---------------------------------------------------------------- 12保存できていることを確認 13 14<サーバー2: PHPのみ> 15session_start(); 16$sessiontest = $_SESSION['sessiontest2']; //ここで同じくNULLになる
補足情報(FW/ツールのバージョンなど)
Laravel Framework 6.20.26 PHP 7.4.3 (2台とも) Ubuntu VERSION="20.04.2 LTS (Focal Fossa)" (2台とも) memcached cache.t2.micro
サーバー1:Laravel側 memcachedの設定 .envファイル ------------------------------------------------------- CACHE_DRIVER=memcached MEMCACHED_HOST=xxx.xxx.cfg.apne1.cache.amazonaws.com MEMCACHED_PORT=11211 QUEUE_CONNECTION=sync SESSION_DRIVER=memcached SESSION_LIFETIME=120 -------------------------------------------------------
サーバー2:PHP側 memcachedの設定 [Session] ; Handler used to store/retrieve data. ; http://php.net/session.save-handler session.save_handler = memcached session.save_path = "xxx.xxx.cfg.apne1.cache.amazonaws.com"
因みにセッション情報でなくkey,valueでmemcacheに保存する方法では保存取得が問題なくできています。
各サーバーでmemcachedにアクセスはできているので、何かセッション情報の保存方法もしくは取得方法が間違っているのでしょうか?
ご教授いただければ幸いです。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/11 07:36