質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

5536閲覧

PHP 7.3.xでのPHPセッションでRedis使用

退会済みユーザー

退会済みユーザー

総合スコア0

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2019/06/06 02:11

前提・実現したいこと

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」

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

pecl upgrade redis、もしくは一旦peclでredisをuninstallしてから、redisをインストールし直すことで解決しました。

投稿2020/05/05 11:50

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問