热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

phpsession写入失败怎么办

phpsession写入失败是因为把session误存在memcache里面了,其解决办法就是把session存在redis里面,然后修改p

php session写入失败是因为把session误存在memcache里面了,其解决办法就是把session存在redis里面,然后修改php的配置文件即可。

本文操作环境:windows10系统、PHP7.1版,DELL G3电脑

具体问题:

php session 写入失败怎么办?

php 一直报session写入失败

Warning: session_write_close(): Failed to write session data using user defined save handler. (session.save_path: tcp://127.0.0.1:6379) in /var/www/html/php/libs/util/Session.php on line 43

114e523bdc0943b24cd9daf932d215b.png

问题描述

我的代码写入session 的时候一直报这个问题, 环境是windows10 ubuntu 子系统,session 写入的位置是 memcache 6379 端口,扩展都开启了,有大神能解答一下这是什么问题吗?

问题出现的环境背景及自己尝试过哪些方法

相关代码

class Session {
  // single ton
  private static $session_handler_;
  public static function Init() {
    if (!isset(self::$session_handler_))
      self::$session_handler_ = new Session();
  }
  // 阻止用户复制对象实例
  public function __clone() {
    trigger_error('Clone Session is not allowed.', E_USER_ERROR);
  }
  private function __construct() {
    session_set_save_handler(array($this, "Open"),
                             array($this, "Close"),
                             array($this, "Read"),
                             array($this, "Write"),
                             array($this, "Destroy"),
                             array($this, "Gc"));
    // for web user
    $session_id = COOKIE::Get(SESSIONID);
    /* length of session id
     128-bit digest (MD5)
     4 bits/char: 32 char SID
     5 bits/char: 26 char SID
     6 bits/char: 22 char SID
     160-bit digest (SHA-1)
     4 bits/char: 40 char SID
     5 bits/char: 32 char SID
     6 bits/char: 27 char SID
    */
    if (!empty($session_id) && 26 == strlen($session_id))
      session_id($session_id);
    session_start();
  }
  public function __destruct() {
    session_write_close();
  }
  public function Open($save_path, $session_name) {
    return true;
  }
  public function Close() {
    return true;
  }
  public function Read($session_id) {
    $key = SESSION_PREFIX . $session_id;
    $memcached_client_ = SessionMemCachedClient::GetInstance();
    return (string)$memcached_client_->get($key);
  }
  public function Write($session_id, $data) {
    $key = SESSION_PREFIX . $session_id;
    $memcached_client_ = SessionMemCachedClient::GetInstance();
    if ($data)
      return $memcached_client_->set($key, $data, SESSION_EXPIRE_TIME);
    return true;
  }
  public function Destroy($session_id) {
    $key = SESSION_PREFIX . $session_id;
    $memcached_client_ = SessionMemCachedClient::GetInstance();
    return $memcached_client_->delete($key);
  }
  public function Gc($maxlifetime) {
    return true;
  }
}
Session::Init();

你期待的结果是什么?实际看到的错误信息又是什么?

解决办法:

已经找到问题所在了,我们现在是把session 存在memcache里面,memcache用的是6379端口, 但是之前我是把session存在redis里面,改了php的配置文件,我忘了这一点,所以一直以为代码有问题。

推荐学习:《PHP视频教程》


推荐阅读
  • 一.常见基于身份识别进行反爬1通过headers字段来反爬headers中有很多字段,这些字段都有可能会被对方服务器拿过来进行判断是否为爬虫1.1通过headers中的User-A ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了GregorianCalendar类的基本信息,包括它是Calendar的子类,提供了世界上大多数国家使用的标准日历系统。默认情况下,它对应格里高利日历创立时的日期,但可以通过调用setGregorianChange()方法来更改起始日期。同时,文中还提到了GregorianCalendar类为每个日历字段使用的默认值。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 指示|厂家_UDS协议
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了UDS协议相关的知识,希望对你有一定的参考价值。UDS的第二类诊断服务,数据传输 ... [详细]
  • 1.Listener是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。当增加一个HttpSession时 ... [详细]
  • 前言:关于跨域CORS1.没有跨域时,ajax默认是带cookie的2.跨域时,两种解决方案:1)服务器端在filter中配置详情:http:blog.csdn.netwzl002 ... [详细]
  • PHP输出缓冲控制Output Control系列函数详解【PHP】
    后端开发|php教程PHP,输出缓冲,Output,Control后端开发-php教程概述全景网页源码,vscode如何打开c,ubuntu强制解锁,sts启动tomcat慢,sq ... [详细]
  • 初始化初始化本地空版本库,仓库,英文名repositorymkdirtest&&cdtestgitinit克隆项目到本地gitclone远程同 ... [详细]
  • 渗透测试基础bypass绕过阻挡我们的WAF(下)
    渗透测试基础-bypass ... [详细]
  • Java大文件HTTP断点续传到服务器该怎么做?
    最近由于笔者所在的研发集团产品需要,需要支持高性能的大文件http上传,并且要求支持http断点续传。这里在简要归纳一下,方便记忆 ... [详细]
  • npminstall-Dbabelcorebabelpreset-envbabelplugin-transform-runtimebabelpolyfillbabel-loader ... [详细]
author-avatar
yangweizhi62057
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有