7

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

新服务器上的登录现在被破坏了,我追查到虽然会话 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');
}

...并且登录现在可以在新服务器上使用。

4

1 回答 1

9

有时会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 语句并为最坏的情况做准备,即当您的应用程序变得可靠且不易出错时。

于 2010-10-23T20:32:48.150 回答