V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xiaolvmu
V2EX  ›  问与答

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

  •  
  •   xiaolvmu · 2015-01-02 10:45:28 +08:00 via Android · 3907 次点击
    这是一个创建于 3639 天前的主题,其中的信息可能已经有所发展或是发生改变。
    例如,我在我的 VPS 上同时部署 WordPress 和 esoTalk 程序。但是两者的 PHP session 时常冲突,如果你在两个程序中,用户名和密码都是相同的话,总会有其中一个,怎么都登录不上,没有任何提示。
    这该如何解决呢?
    两个程序分别位于 /var/www/html 和 /var/www/html/wordpress 。
    11 条回复    2015-01-05 21:41:13 +08:00
    haiyang416
        1
    haiyang416  
       2015-01-02 11:09:05 +08:00 via Android   ❤️ 1
    既然没有任何提示,你又如何得知问题出在 session 上呢?

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

    你应该打开 php 的错误提示,找到真正的原因。
    xiaolvmu
        2
    xiaolvmu  
    OP
       2015-01-02 11:16:29 +08:00
    @haiyang416 感谢你。
    我还在继续寻找原因......
    79bxh9b
        3
    79bxh9b  
       2015-01-02 11:18:40 +08:00   ❤️ 1
    cookie里的session是不带端口号的,可以用二级域名来区分
    一定要ip访问的话可以用hosts强行转换成域名
    beaaar
        4
    beaaar  
       2015-01-02 12:16:35 +08:00 via iPad   ❤️ 1
    如果你这俩程序域名相同的话,可能会发生session冲突。需要通过域名来区分两套程序。
    xiaolvmu
        5
    xiaolvmu  
    OP
       2015-01-02 12:20:01 +08:00 via Android
    @beaaar 谢谢!
    我用的 WordPress 是二级域名。而 esotalk 是顶级域名。
    kmvan
        6
    kmvan  
       2015-01-02 12:21:59 +08:00   ❤️ 1
    请修改 wp-config.php 相关define
    lincanbin
        7
    lincanbin  
       2015-01-02 12:22:14 +08:00 via Android   ❤️ 1
    是你在同一客户端上同时访问过俩站,同一域名之间的cookie是共享的
    wesley
        8
    wesley  
       2015-01-02 12:26:34 +08:00   ❤️ 1
    session_name('xxxxx')
    Kilerd
        9
    Kilerd  
       2015-01-02 16:18:12 +08:00 via Android   ❤️ 1
    设置session地址,让不同的程序访问不同的session就行了
    haiyang416
        10
    haiyang416  
       2015-01-02 17:06:16 +08:00   ❤️ 1
    @xiaolvmu 我没考虑到你使用同样的根域名的情况,你直接修改 wordpress 的 COOKIE_DOMAIN 为对应的二级域名即可。前面的回答没考虑全面,抱歉。
    xiaolvmu
        11
    xiaolvmu  
    OP
       2015-01-05 21:41:13 +08:00 via Android
    @haiyang416 非常感谢你*^_^*
    我在 wp-config 里面 define 了一个 COOKIE_DOMAIN ,成功解决了问题。
    谢谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1864 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:19 · PVG 00:19 · LAX 08:19 · JFK 11:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.