php - 无法更改 php session cookie 名称

标签 php apache http session-cookies

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

新服务器上的登录现在被破坏了,我追踪到这个事实,虽然 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/

相关文章:

php - 数据馈送至 MySQL

php - Paypal IPN 取消订阅,发送新的登录信息?

java - JAVA从Excel表格中获取特定数据

json - AngularJS 获取 JSON 的 HTTP 状态 0

javascript - Angular multipart/form-data 表单发送

php - 如何创建从数据库驱动的动态菜单和页面?

php - 利用 file_get_contents()

php - Apache 用户帐户无密码访问服务器 - Ubuntu

c++ - QUrl:不正确的链接

php - 表格中的多个 div 标签用于特定的文本框长度