我将现有且成功运行的站点复制到新的开发服务器。
新服务器上的登录现在已损坏,我追踪到虽然会话 cookie 已重命名...
ini_set('session.name', 'DOMAIN1');
...浏览器继续将会话 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');
}
...现在可以在新服务器上登录。
有时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 语句并为最坏的情况做好准备,那时您的应用程序将变得可靠且不易出错。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)