PHP 设置session 存储在memcache:
方法I: 在 php.ini 中全局设置
1
2session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"方法II: 某个目录下的 .htaccess :
1
2php_value session.save_handler "memcache"
php_value session.save_path "tcp://127.0.0.1:11211方法III: 再或者在某个一个应用中:
1
2ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://127.0.0.1:11211");使用多个 memcached server 时用逗号”,”隔开,并且和 Memcache::addServer() 文档中说明的一样,
可以带额外的参数”persistent”、”weight”、”timeout”、”retry_interval” 等等,
类似这样的:”tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2” 。
遇到问题:
今天同事说服务器上的session无法读取,具体现象如下:
本地PHP版本5.x 上述操作方法I, 可以正常存储/获取session.
服务器PHP7.2 上述操作方法I, 存储获取session失败.
解决办法:
之前从PHP5一直用的是memcache扩展,感觉应该是PHP7和这个扩展兼容性之类的问题,并在本地做了测试,
memcache扩展+PHP7.2 复现,
memcached扩展+PHP7.2解决
以下任选一个:
- 更改存储方式为文件
session.save_handler = file
; 更换扩展memcache 更改为 memcached, 修改对应配置文件为:
1
2ini_set("session.save_handler", "memcached"); // 是memcached不是memcache
ini_set("session.save_path", "127.0.0.1:11211"); // 不要tcp:`
修改完配置文件 记得重启一下服务