私は3つのサーバーを設定しました:
192.168.7.147:6379 <-- redis server
192.168.7.162 <-- web server 1 (using phpredis, with local devdomain jttest.com )
192.168.7.218 <-- web server 1 (using phpredis, with local devdomain jttest.com )
192.168.7.162と192.168.7.218の両方を使用してphp.ini設定は次のようになります:
extension=redis.so
session.save_handler = redis
session.save_path = tcp://192.168.7.147:6379
また、これらのオプションを変更した後、ApacheとRedisも再起動しました。もちろん、PHPコード内でRedisの基本機能を使用できます。
問題はここから始まります。PHP標準セッション呼び出し(session_start())を使用して192.168.7.162にログインできますが、192.168.7.218でセッションを取得できず、その逆も同様です。簡単に言えば、Redisセッションは共有されません。
192.168.7.147内で、セッションに関連するキーを取得できませんでした(セッション名はPHPREDIS_SESSIONです)。redis-cliから取得した結果を見てください。
redis 127.0.0.1:6379> keys *
1) "attribute"
2) "test"
redis 127.0.0.1:6379>
もう一つ、192.168.7.218phpはredisではなくファイルを使用してセッションを保存します
[root@centos_wira_devel session]# ll
total 8
-rw------- 1 apache apache 792 Feb 26 16:29 sess_1nm86s67o1o696cgopmrc2hq75
-rw------- 1 apache apache 792 Feb 26 16:41 sess_hhmompfoqjh0emoofppg4v5lp2
ちなみに、私のブラウザでは、セッションのクッキー(192.168.7.162と192.168.7.218の両方)が['PHPREDIS_SESSION'] = hhmompfoqjh0emoofppg4v5lp2として保存されています。
phpredisのページでは、このケースに関するFAQは見つかりませんでした(phpredis は、以下の URL からダウンロードできます。)、どこにステップが欠けているか分かりませんでした。
答え1
セッション設定は、php.ini 以外の他の設定ファイルで変更される可能性があります。これは、phpinfo() 出力の「session」セクションをチェックすることで確認できます。列「Local Value」の値が列「Master Value」の値と異なる場合は、他のファイルを検査する必要があります。
具体的には、Centos のサーバー 192.168.7.162 では、/etc/httpd/conf.d/php.conf で session.save_handler が「files」に設定されている可能性が非常に高いです。
答え2
php-fpm の設定も確認してください。長い検査の後、これを見つけました。Linux を使用している場合は、grep
設定が変更された場所を見つけてください。たとえば、grep -r "save_handler" /etc/
テキスト検索を実行してファイルを表示します。
php_fpm.conf は、