前提・実現したいこと
session.save_pathにredisを設定しています。
PHP 7.3.xでPHPセッションにRedisを設定すると、エラーを吐かない会員制サイトのログインできない状態が発生します。
※情報が合っていても、意図的な誤入力でもエラーにならない永久ログインループです。
PHP7.3.xでバージョンをアップデートすると、
何かの対応をすると動くようになったり、完全に動かないことがありました。
これは純粋に7.3.xの個別バージョンとRedisの相性的な問題なのか?設定の問題なのでしょうか?
発生している問題・エラーメッセージ
<?php session_start(); echo "save_handler=" . ini_get("session.save_handler") . "\n"; echo "save_path=" . ini_get("session.save_path") . "\n"; echo "session_id=" . session_id() . "\n"; $_SESSION['libname'] = "PhpRedis"; ?>
上記PHPを実行したときsession_start()でエラーがでます。
PHP Warning: session_start(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/session.php on line 2 PHP Warning: session_start(): Failed to read session data: redis (path: tcp://127.0.0.1:6379?auth=PASS) in /var/session.php on line 2
試したこと
下記のようなPHPでのRedisは機能しています。
<?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); $redis->auth('REDISパスワード'); $redis->set('title', 'Redis触ってみました'); $value = $redis->get('title'); echo $value; ?>
redis-cliコマンドでのset/getも問題なく反応します。
PHPを7.1や7.2に変えると問題なく動きます。自分の環境では7.3.xで起きています。
7.3.xでも、flushdbやdel keysでクリアしたら使えたり、redisを再起動したら使えたりすることがありました。※一度使えるようになると、サーバー再起動しても、Redisなどを再起動してもエラー無く使えます(こともありました)。
現在はPHP7.3.6ですが、このバージョンでは何をやってもPHPセッションにRedisを使うことができなくなりました。
Redisの再インストールも試みています。
7.1や7.2のようにphpをアップデートしても問題なく(PHPセッションに指定して)Redisを動くようにしたいです。
補足情報(FW/ツールのバージョンなど)
CentOS 7.6, PHP 7.3.6, nginx 1.14.2, Redis 5.0.5, php-pecl-redis 4.3.0
Redisディレクトリは「/var/run/redis」
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。