我将现有且成功运行的站点复制到新的开发服务器。
新服务器上的登录现在已经破了,我跟踪了这个事实,虽然会话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');
}
...并且登录现在可以在新服务器上运行。
答案 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。