我遇到了一个奇怪的问题,因为我已将PHP从5.4升级到5.6。我自己从来没有见过这个错误,但每天都记录下这条消息:
session_write_close():无法写入会话数据(memcached)。请验证session.save_path的当前设置是否正确(127.0.0.1:11211)
这不会一直发生,但仅适用于某些用户。这发生在具有PHP~5.6& 3的三个不同服务器上。 Memcached关于最新的Debian。我已经尝试将Memcached扩展切换到Memcache(当然在php.ini中更改save_handler),问题仍然存在。我也试过在php.ini中禁用会话锁。问题肯定与PHP有关,因为我已经使用Perl脚本测试了Memcached守护程序本身,并且没有一个连接错误。
很长一段时间以来一切都很完美,我在PHP升级后就开始遇到这个问题了,所以它与memcached配置无关,或类似的东西。也许我错过了什么?也许5.6在其ini文件中需要一些额外的配置?我只是想不通。
目前我有点陷入困境,我希望有人能帮助我提出建议。我可以尝试切换回5.4或5.5,但这不是一个选项,我真的想坚持5.6。
答案 0 :(得分:1)
有2个扩展名为php, memcache 和 memcached 。
memcached 扩展程序基于libmemcache,无论如何你应该更喜欢它。
根据我的经验,当前版本的memcache守护程序与 memcache 扩展名不相称。存储数据有效,但是我遇到了在第一次请求之后将数据写入会话的重大性能问题(第一次请求全新会话很好而且速度很快,每次后续请求都需要10秒钟!)。用 memcached 替换 memcache 修复了这个特殊问题。
警告: memcached 的session.save_path
语法略有不同。我不得不省略tcp://
或者它不起作用
因此,对于 memcached ,请使用:
session.save_path = "127.0.0.1:11211"
对于 memcache ,请使用:
session.save_path = "tcp://127.0.0.1:11211"
答案 1 :(得分:0)
请确保你的php.ini会话是这样的。
session.save_path = "tcp://127.0.0.1:11211"
或unix套接字
session.save_path = "unix:///var/run/memcached.sock"