config.php memcached存储session失败

config.php memcached存储session失败

我本地用虚拟机创建了linux,本地IP为192.168.58.132。防火墙也已经关闭了。

memcached已经开启,端口号为11211。`telnet 127.0.0.1 11211`可以连接上memcached。

前面所有需要安装的都已经安装了,但是config.php文件执行不成功。

打了断点,发现在`session_start()`这一行有问题。

如果不打断点,页面无任何信息显示。

config.php代码如下

<?php

// 1.设置session存储介质为memcached
ini_set('session.save_handler','memcached');


// 2.设置session存储memcached的服务器端口地址
ini_set('session.save_path','192.168.58.132:11211');


// 3.设置cookie名称
ini_set('session.name','test_id');


// 4.session生存时间
ini_set('session.gc_maxlifetime',3600);


// 5.设置session存储memcached key前缀
ini_set('memcached.sess_prefix','memc.tim');


// 6.开启session
session_start();


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

6回答
慕圣4478250 2018-05-24 14:21:57

老哥  问题解决没  我遇到跟你一样的问题了

  • 你好,尝试一下guly老师提供的方式试一试。
    2018-05-24 14:33:43
  • 试了 还是不行
    2018-05-24 14:50:54
  • 提问者 鼎晨要住顶层 #3
    不行,自己放弃用memcached存储session了。
    2018-05-24 15:36:29
guly 2018-05-22 17:50:35

你好,解决方法如下:

修改php.ini文件

1、

session.save_handler = memcache

//如果配置文件中是memcache,config文件中也应该设置成memcache  应保持一直否者或出现如下错误:

http://img1.sycdn.imooc.com//climg/5b03e7120001176610220047.jpg

根据设置保持一直

http://img1.sycdn.imooc.com//climg/5b03e7480001d54d13900448.jpg

2、

session.save_path = "tcp://127.0.0.1:11211"

运行结果:

http://img1.sycdn.imooc.com//climg/5b03e78e00012bc607690123.jpg

注意url参数值

http://img1.sycdn.imooc.com//climg/5b03e7bb0001016613100928.jpg

如果解决您的问题请采纳,祝学习愉快!

  • 老师,我们使用的不是memcached吗?为什么这样会报错,改成memcache就不会呢?
    2018-08-01 23:01:11
  • 你好,这和按装的扩展有关系,比如我在windows下下载PHP7对应的memcached的扩展的文件,还是php_memcache.dll ,没有php_memcached.dll ,所以这和您安装的扩展文件有关,如果说memcache 或者memcached 两者一个可以执行的话即可,祝学习愉快!
    2018-08-03 09:34:57
guly 2018-05-22 16:50:43

你好,从您贴出的index.php的代码是没有问题的,建议通过打印调试是处于登录状态还是未登录状态,然后在打印url传递的参数值,进行调试,查看是否获取到url的值,因为小慕不知道您的url的参数值传递是否正确,无法判断是否成功获取值并存储到session,祝学习愉快!

  • 提问者 鼎晨要住顶层 #1
    连基本的页面载入都失败,config.php那一步就错了。 error_log里面的信息和@sugm同学的是一样的。 Fatal error: Uncaught Error: Failed to create session ID: memcached (path: 192.168.1.4:11211) in /var/www/html/session/config.php:25 Stack trace: #0 /var/www/html/session/config.php(25): session_start() #1 /var/www/html/session/index.php(8): require_once('/var/www/html/s...') #2 {main} thrown in /var/www/html/session/config.php on line 25
    2018-05-22 17:12:58
提问者 鼎晨要住顶层 2018-05-22 16:31:40

补充index.php代码

<?php

// index.php

// 引入session配置文件
require_once 'config.php';

// 用户已经登录
if(isset($_SESSION['user_no']) && !empty($_SESSION['user_no']))
{
    echo "{$_SESSION['user_name']}你已经登录";
}
else
{
    // 用户未登录
    if(isset($_GET['user_no']) && intval($_GET['user_no']) == 201805)
    {
        echo "欢迎你,{$_SESSION['user_name']}";
        $_SESSION['user_no'] = intval($_GET['user_no']);
        $_SESSION['user_name'] = trim($_GET['user_name']);
    }
    else
    {
        echo '参数错误,请重试';
    }
}


提问者 鼎晨要住顶层 2018-05-22 09:47:35

视频里的写法是错的,应该是

ini_set('session.save_handler','memcache');

 写成memcache才行,memcached不行。


  • guly #1
    你好,您的问题解决即可,我们会及时审核视频内容~~~祝学习愉快!
    2018-05-22 10:23:33
  • 提问者 鼎晨要住顶层 回复 guly #2
    好像还是不行,设成memcache确实可以显示出页面,session也生成了。 但是,查询不出来!!! 怎么破?!
    2018-05-22 10:46:26
  • guly 回复 提问者 鼎晨要住顶层 #3
    你好,建议以正确的格式贴出您请求的url以及index.php代码,祝学习愉快!
    2018-05-22 16:06:46
辰星辰 2018-05-21 18:54:35

这估计跟你的session有关,不关memcached事,你在别的页面用用session_start(),存值取值试试看什么情况。把memcached设置为session的存储介质可以直接改那php.ini的配置,改config.php前两项就可以了,后面都是session的设置,session.save_handler = memcache,session.save_path = "192.168.58.132:11211"。

  • 提问者 鼎晨要住顶层 #1
    应该不是session的问题,index.php引入了这个config.php达到初始化session配置的目的。 现在是congifg.php连自身的开启sessoin_start都做不到。
    2018-05-21 19:16:50
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师