【问题标题】:Cannot change php session cookie name无法更改 php 会话 cookie 名称
【发布时间】:2010-10-24 05:18:58
【问题描述】:

我将现有且成功运行的站点复制到了新的开发服务器。

新服务器上的登录现在已损坏,我追查到虽然会话 cookie 已重命名...

ini_set('session.name', 'DOMAIN1');

...浏览器一直将会话cookie存储为PHPSESSID。

当我从新服务器上的应用程序中删除上述行时,登录再次起作用。但这不是一个好的解决方案,因为另一个应用程序也使用此名称下的 PHPSESSID。

而且我更愿意找到奇怪行为的原因,而不是使用解决方法。如果我不修复它,它可能会在其他地方咬我。

也许这已经足够有人给我提示了。如果不是,哪些信息有用?

这台机器是一个非常赤裸裸的基本 ubuntu 8.04 服务器,我安装了 apache2、mysql 和 php5 的 aptitude。我还更新了 lokales 和时区。

解决方案:

我用接受的答案中的代码替换了上面的行...

if(ini_set('session.name', 'DOMAIN1') === false || !session_name('DOMAIN1'))
{
    die('Unable to set sesssion scope');
}

... 登录现在可以在新服务器上运行。

【问题讨论】:

    标签: php apache http session-cookies


    【解决方案1】:

    有时ini_set 播放,无法正确设置 ini 值,可能是权限问题。

    以下内容并未完全解决ini_set 的问题,如果有人知道ini_set 在某些类型的主机上不起作用的原因,请分享!

    尝试以下方法:

    <?
    if(ini_set('session.name', 'DOMAIN1') === false || !session_name('DOMAIN1'))
    {
        die('Unable to set sesssion scope');
    }
    
    phpinfo();
    ?>
    

    或者你可以使用session_name() 来设置它,我总是建议你不要只运行函数并希望总是检查 if 语句并为最坏的情况做准备,那就是当你的应用程序变得可靠并且不易出错。

    【讨论】:

    • 不,ini_set() 不应该修改 INI 文件:请参阅 php.net/ini_set 否则将是一个巨大的潜在安全漏洞。
    • 谢谢,经过数小时的搜索,它终于奏效了。我用您示例中的 4 行替换了旧代码并修复了它!
    猜你喜欢
    • 1970-01-01
    • 2015-09-25
    • 2020-07-24
    • 1970-01-01
    • 2020-07-14
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    相关资源
    最近更新 更多