【问题标题】:How to setup session for a site alias. PHP Apache2如何为站点别名设置会话。 PHP Apache2
【发布时间】:2013-07-17 22:42:33
【问题描述】:

我在带有虚拟主机的 Apache2 服务器上运行 php。我有 2 个域,比如说 domain1.com 和 domain2.com(不是子域)

domain2.com 是 domain1.com 的 ServerAlias

domain1.com 上的会话运行良好。但是,我无法将会话变量保存在 domain2.com 上。

我不相信我的会话正在保存,因为它没有在页面之间转移。我在 index.php 页面上设置了变量。我可以转储会话并查看它最初是设置的。然后我的 index.php 重定向到 home.php 我在 home.php 的顶部有这个

<?php
session_start();
var_dump($_SESSION); 
?>

我在 home.php 上得到一个空数组

我的 phpinfo() 设置与我在 2 个域上的会话信息完全相同。

我卡住了,不确定这是 php 问题还是 apache 设置。任何帮助是极大的赞赏!

【问题讨论】:

  • 嗨,乔,感谢您的回复。我不确定那个帖子和我的有什么关系。我的主要问题是会话没有保存或在我的别名域上被擦除。除非我看错了问题?
  • php 中的会话是通过 cookie 传播的,所以如果您在域之间遇到问题,这就是原因..

标签: php apache session apache2 session-variables


【解决方案1】:

php 中的会话通常由 cookie 在 php 中维护。您可能看到的是 session.cookie_domain 的值被设置为您在 ini 中设置的工作域。在 session_start 调用之前使用 ini_set 或 session_set_cookie_params 进行纠正。

【讨论】:

  • 我在 domain1.com 和 domain2.com 上都做了一个 phpinfo,它们的 session.cookie_domain 都是 'domain1.com'。你是说我在 domain2.com 上时应该将其设置为 domain2.com 吗?
  • 这种情况下浏览器不会将 domain1.com cookie 发送到 domain2.com
  • 好的,如果我理解正确,我的session.cookie_domain 被设置为 domain1.com 对于 domain1.com 和 domain2.com 但是,domain2.com 将会话保存在它可以保存的地方'访问?如果这是正确的,那么我的页面顶部需要这样的东西吗?if($_SERVER[HTTP_HOST]=='domain2.com'){ ini_set("session.cookie_domain", "domain2.com");} session_start();
  • 如果它成功了,那就太容易了。代码是否需要位于每个页面的顶部,或者只是初始页面?我把代码放在一个页面上,然后立即调用了 phpinfo(),它仍然显示session.cookie_domain 作为 domain1.com 我觉得我在这里遗漏了一些东西......
  • 在我的头撞在桌子上几个小时后,我想通了。在我的虚拟主机中,我正在设置 cookie_domain。因此,似乎无论我在 php 中做了什么,下一次它都会被服务器覆盖并基本上开始一个新会话。所以我把它从虚拟主机中取出,放在我所有页面的顶部:if($_SERVER[HTTP_HOST]=='domain1.com'){ ini_set("session.cookie_domain", "domain1.com"); }else{ ini_set("session.cookie_domain", "domain2.com"); } session_start();
【解决方案2】:

另一个对我有用的选项:强制会话名称:

session_name("myWebsite");
session_start(); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    相关资源
    最近更新 更多