无法更改php会话cookie名称

mit*_*mit 7 php apache http session-cookies

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

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

ini_set('session.name', 'DOMAIN1');
Run Code Online (Sandbox Code Playgroud)

...浏览器将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');
}
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*itt 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();
?>
Run Code Online (Sandbox Code Playgroud)

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

  • 不,ini_set()不应该修改INI文件:请参阅http://php.net/ini_set否则这将是一个很大的潜在安全漏洞. (2认同)