无法更改php会话cookie名称

时间:2010-10-23 20:19:23

标签: php apache http session-cookies

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

新服务器上的登录现在已经破了,我跟踪了这​​个事实,虽然会话cookie被重命名......

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

...浏览器会将sesssion cookie存储为PHPSESSID。

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

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

也许这已经足够让某人给我提示了一些信息。如果没有,哪些信息会有用?

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

解决方案:

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

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

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

1 个答案:

答案 0 :(得分:8)

有时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语句中检查并准备最坏的情况,那就是当你的应用程序变成可靠且少error_prone。