redis中的PHP会话无法正常工作

时间:2015-12-29 00:35:23

标签: php session redis

这是我的php.ini会话设置

session.save_handler = redis
session.save_path    = tcp://127.0.0.1:63791

这是我的会话信息()

Session Support     enabled
Registered save handlers    files user redis rediscluster redis rediscluster
Registered serializer handlers  php_serialize php php_binary wddx igbinary
Directive   Local Value Master Value
session.auto_start  Off Off
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value
session.cookie_httponly Off Off
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    no value    no value
session.entropy_length  0   0
session.gc_divisor  1000    1000
session.gc_maxlifetime  1440    1440
session.gc_probability  1   1
session.hash_bits_per_character 5   5
session.hash_function   0   0
session.lazy_write  On  On
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    redis   redis
session.save_path   tcp://127.0.0.1:63791   tcp://127.0.0.1:63791
session.serialize_handler   php php
session.upload_progress.cleanup On  On
session.upload_progress.enabled On  On
session.upload_progress.freq    1%  1%
session.upload_progress.min_freq    1   1
session.upload_progress.name    PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix  upload_progress_    upload_progress_
session.use_cookies On  On
session.use_only_cookies    On  On
session.use_strict_mode Off Off
session.use_trans_sid   0   0

以下是使用session_start

加载页面时出现的错误
  

致命错误:未捕获RedisException:连接已关闭[无活动   file]:0堆栈跟踪:第0行[无活动文件]中抛出#0 {main}

我做错了什么? Stack是 Apache 2.4.18,Php7.01,Redis 2.2.5

1 个答案:

答案 0 :(得分:3)

你读过:https://www.digitalocean.com/community/tutorials/how-to-set-up-a-redis-server-as-a-session-handler-for-php-on-ubuntu-14-04

确保php应用程序不会覆盖session.save_path ex:

ini_set("session.save_path","/tmp/");

如果是这样,您在PHP应用程序中覆盖了设置,那么连接将失败。

在单独的php文件中测试您的配置:

<?php
var_dump(ini_get("session.save_handler"));
var_dump(ini_get("session.save_path"));

从控制台或网络浏览器运行它。要验证设置是否正确,还应尽可能晚地在应用程序中执行此代码。

大多数情况下,框架中的ini设置(Zend,Symfony等)在该框架的引导阶段都会被重载。

当var_dump的输出与单独的PHP文件不同时,您可能需要调整框架设置。阅读您正在使用的框架的文档。

你问的东西可能有很多原因和结果。 取决于基础架构,Redis设置,防火墙,PHP应用程序/框架。你应该知道这一点。