如何避免在同一主机下安装多个 PHP 程序时的 Session 冲突?

2015-01-02 10:45:28 +08:00
 xiaolvmu
例如,我在我的 VPS 上同时部署 WordPress 和 esoTalk 程序。但是两者的 PHP session 时常冲突,如果你在两个程序中,用户名和密码都是相同的话,总会有其中一个,怎么都登录不上,没有任何提示。
这该如何解决呢?
两个程序分别位于 /var/www/html 和 /var/www/html/wordpress 。
3881 次点击
所在节点    问与答
11 条回复
haiyang416
2015-01-02 11:09:05 +08:00
既然没有任何提示,你又如何得知问题出在 session 上呢?

另外,默认情况下, session 是以文件形式保存的,每个 session 的名称都附有 session_id,网站的 session_id 都是随 cookie 发送的,所以碰撞的几率几乎为0,问题不会在这里。

你应该打开 php 的错误提示,找到真正的原因。
xiaolvmu
2015-01-02 11:16:29 +08:00
@haiyang416 感谢你。
我还在继续寻找原因......
79bxh9b
2015-01-02 11:18:40 +08:00
cookie里的session是不带端口号的,可以用二级域名来区分
一定要ip访问的话可以用hosts强行转换成域名
beaaar
2015-01-02 12:16:35 +08:00
如果你这俩程序域名相同的话,可能会发生session冲突。需要通过域名来区分两套程序。
xiaolvmu
2015-01-02 12:20:01 +08:00
@beaaar 谢谢!
我用的 WordPress 是二级域名。而 esotalk 是顶级域名。
kmvan
2015-01-02 12:21:59 +08:00
请修改 wp-config.php 相关define
lincanbin
2015-01-02 12:22:14 +08:00
是你在同一客户端上同时访问过俩站,同一域名之间的cookie是共享的
wesley
2015-01-02 12:26:34 +08:00
session_name('xxxxx')
Kilerd
2015-01-02 16:18:12 +08:00
设置session地址,让不同的程序访问不同的session就行了
haiyang416
2015-01-02 17:06:16 +08:00
@xiaolvmu 我没考虑到你使用同样的根域名的情况,你直接修改 wordpress 的 COOKIE_DOMAIN 为对应的二级域名即可。前面的回答没考虑全面,抱歉。
xiaolvmu
2015-01-05 21:41:13 +08:00
@haiyang416 非常感谢你*^_^*
我在 wp-config 里面 define 了一个 COOKIE_DOMAIN ,成功解决了问题。
谢谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/158567

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX