PHP-Sitzungshandler mit Redis funktioniert nicht

PHP-Sitzungshandler mit Redis funktioniert nicht

Mir wurden 3 Server eingerichtet:

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 )

sowohl 192.168.7.162 als auch 192.168.7.218 mitphp.iniKonfiguration genau wie diese:

extension=redis.so
session.save_handler = redis
session.save_path = tcp://192.168.7.147:6379

außerdem habe ich Apache und Redis neu gestartet, nachdem ich diese Option geändert habe. Natürlich kann ich die Grundfunktion von Redis in meinem PHP-Code verwenden.

Die Probleme beginnen hier. Ich kann mich mit dem PHP-Standardsitzungsaufruf (session_start()) auf 192.168.7.162 anmelden, aber die Sitzung kann nicht auf 192.168.7.218 abgerufen werden und umgekehrt. Einfach ausgedrückt:Redis-Sitzung nicht freigegeben.

innerhalb von 192.168.7.147 konnte ich keine Schlüssel für die Sitzung abrufen (Sitzungsname ist PHPREDIS_SESSION). Sehen Sie sich das Ergebnis an, das ich von redis-cli erhalte.

redis 127.0.0.1:6379> keys *
1) "attribute"
2) "test"
redis 127.0.0.1:6379>

noch etwas, bei 192.168.7.218php speichert die Sitzung weiterhin mithilfe von Dateien und nicht mithilfe von 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

zur Information, in meinem Browser wird das Cookie für die Sitzung (sowohl 192.168.7.162 als auch 192.168.7.218) als ['PHPREDIS_SESSION'] = hhmompfoqjh0emoofppg4v5lp2 gespeichert

auf der Seite phpredis habe ich keine FAQ zu diesem Fall gefunden (https://github.com/phpredis/phpredis), ich wusste nicht, wo der Schritt fehlt.

Antwort1

Sitzungseinstellungen können in anderen Konfigurationsdateien geändert werden, außer in php.ini. Dies kann durch Überprüfen des Abschnitts „Sitzung“ der Ausgabe von phpinfo() bestätigt werden. Wenn die Werte in der Spalte „Lokaler Wert“ von denen in der Spalte „Hauptwert“ abweichen, müssen andere Dateien überprüft werden.
Insbesondere in Centos, auf Server 192.168.7.162, ist es sehr wahrscheinlich, dass der session.save_handler in /etc/httpd/conf.d/php.conf auf „Dateien“ eingestellt ist.

Antwort2

Schauen Sie auch unter der php-fpm-Konfiguration nach. Nach langer Untersuchung habe ich dies gefunden. Wenn Sie Linux verwenden, müssen Sie grepherausfinden, wo Ihre Konfiguration geändert wurde. Beispielsweise grep -r "save_handler" /etc/wird eine Textsuche durchgeführt und die Dateien werden angezeigt.

/etc/php-fpm.d/www.conf

verwandte Informationen