php – 不能访问不同服务器上的会话变量
我专门为服务器维护Memcached和存储会话,所以我的所有服务器可以在同一个会话中工作没有困难.
但不知何故,我想我可能误解了Memcached对PHP会话的可能性的意义. 我以为我能够站在Apache 1 a.domain.com上,并创建一个会话,例如$_SESSION [‘test’] =“此字符串保存在会话中”,然后转到Apache 2 b.domain.com或c.domain.com,只需继续该会话并键入echo $_SESSION [‘test’];并输出该字符串. 它不是,但我确信,我被告知,如果您有多个网络服务器共享相同的会话,memcached将是一个伟大的工具. 我做错了什么? 顺便一提.我们认真地需要一个完整的教程或电子书来描述如何设置服务器,使用php,构建基于Memcached的集群等. 在我的php.ini文件中,它说: session.save_path =“192.168.100.228:11211” 教程告诉我不要定义一个协议,并且ip地址已经被给予了Apache 3-memcached服务器 这是phpinfo()的形象 session.cookie_domain中的域不称为域,但它是.local. 编辑: 只是为了信息.当我使用简单的基于Memcached的PHP命令时 – 一切都很完美.但是不知何故当我尝试保存会话时,memcached服务器不存储该项目. 这样做: <?php $m = new Memcached(); $m->addServer('192.168.100.228',11211); $m->set('int',99); $m->set('string','a simple string'); $m->set('array',array(11,12)); /* expire 'object' key in 5 minutes */ $m->set('object',new stdclass,time() + 300); var_dump($m->get('int')); var_dump($m->get('string')); var_dump($m->get('array')); var_dump($m->get('object')); ?> 这不行 <?php session_start(); $_SESSION['name'] = "This is a simple string."; ?> 编辑2:解决方案 我注意到,在删除包括Cookie等的缓存历史记录之后,浏览器没有完成该作业.问题仍然存在,因为它挂在原来的个人会话ID上,这使得每个子域彼此分离. 这里定义的所有内容都是正确的,只要确定您的浏览器会重新设置Cookie. >.<
默认情况下(会话)cookie是域特定的,因此在您的php.ini中设置cookie域
session.cookie_domain = ".domain.com" 另见这里 进行更改后,请确保重新启动网络服务器并清除所有浏览器Cookie.如果您的Cookie名称相同但子域不同,您的浏览器可能会感到困惑. 其他要检查的东西: 这些会话在每个单独的服务器上工作正常. 确保会话处理程序设置正确使用phpinfo()如果你正在使用一个大的代码库,特别是继承/第三方的东西可能会有东西超越它. 如果您使用第三方代码(例如phpbb),请检查Cookie设置是否正确. (请注意,这个答案整理去除头脑风暴,保留所有相关信息) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |