最近在搭建机房容灾账号系统的集群,线上跑的集群LNMP的环境是源码编译安装的,新集群的环境我是yum安装,新集群跑程序员的代码就是不行,最后查出问题是session不能保存,

用测试代码测试:

vi a.php


ini_set('session.save_handler', 'memcached');
ini_set('session.save_path', "172.28.28.118:11211");
session_start();
$_SESSION['aa'] = "bb";

echo session_id();
?>

访问获取到session ID,在memched服务器中 get  session 是可以获取到数据的,说明环境是没有问题的,我就一直纠结在编译安装和yum安装,查了好久,昨天我同事帮找到了问题:

/etc/php-fpm.d/www.conf 中默认配置了session的保存路径

php_admin_value[session.save_path] = /var/lib/php/session

而yum安装php的memched扩展配置memched路径在/etc/php.d/memcache.ini 中,我在这里配置session保存到memched中:

session.save_handler=memcache
session.save_path="tcp://172.28.28.142:11212"

两个地方都配置了session的保存路径,所以程序不知道往那写了,导致一些奇怪的问题发生。注释掉/etc/php-fpm.d/www.conf 中的就好了

 

telnet 172.28.28.142 11212

flush_all(清空memched数据)