我将现有且成功运行的站点复制到新的开发服务器。
新服务器上的登录现在被破坏了,我追踪到这个事实,虽然 session cookie 被重命名了......
ini_set('session.name', 'DOMAIN1');
...浏览器一直将 session cookie 存储为 PHPSESSID。
当我从新服务器上的应用程序中删除上面的行时,登录再次有效。但这不是一个好的解决方案,因为另一个应用程序也使用此名称下的 PHPSESSID。
而且我更愿意找出奇怪行为的原因,而不是使用解决方法。如果我不修复它,它可能会在其他地方咬我。
也许这已经足够有人给我提示的信息了。如果没有,哪些信息会有用?
这台机器是一个非常裸的和基本的ubuntu 8.04服务器,我用aptitude安装了apache2、mysql和php5。我还更新了地区和时区。
解决方案:
我用接受的答案中的这段代码替换了上面的行 ...
if(ini_set('session.name', 'DOMAIN1') === false || !session_name('DOMAIN1'))
{
die('Unable to set sesssion scope');
}
... 并且登录现在可以在新服务器上使用。
最佳答案
有时 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 语句并为最坏的情况做准备,那就是您的应用程序变得可靠且不易出错的时候。
关于php - 无法更改 php session cookie 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4005883/