【发布时间】:2011-04-19 17:33:44
【问题描述】:
我有一个带有 apache2 的 Windows server 2008。服务器有 2 个磁盘,我在这两个磁盘上运行一个 apache 实例。第一个作为服务运行,第二个在命令行中运行。他们都在自己的 htdocs 文件夹中使用相同 webroot 的精确副本。此外,它们都使用位于第一张光盘(程序文件(x86))上的相同 PHP 安装。我的应用程序通过 SSL 运行并使用 PHP 和 MySQL。
作为服务运行的网络服务器可以很好地运行我的应用程序,让我可以登录并随时准备好我的会话数据。然而,第二台服务器让我运行我的登录脚本,在运行脚本时有会话数据,但在重定向到同一个 webroot 内的另一个页面后丢失了该会话数据。
第二个网络服务器上的问题类似于this question,除了我在每个页面上都有 session_start()。
我的登录脚本是这样工作的:
- 用户请求页面
- 如果用户没有通过身份验证,他会被扔回登录页面
- 如果用户通过了身份验证,他将获得一个带有个人资料数据的 $_SESSION["auth"]
- 然后当用户在浏览主页面或其他需要认证的页面时,他们只需检查是否设置了 $_SESSION["auth"]。
关于如何解决这个问题的任何提示?
编辑: 一个小小的说明。我在每个页面上都有一个会话 ID。当我被重定向时,该 ID 不会改变。我重定向到的页面上的 $_SESSION 变量中没有任何数据。
【问题讨论】:
-
如果将代码添加到丢失会话数据的页面
<pre><?php print_r($_SESSION); ?></pre>,您会看到什么,换句话说;会话转储? -
print_r($_SESSION);写入一个空字符串
-
当您说第一个“作为服务器运行”时,您的意思是作为 NT 服务吗?如果是这样,运行 services.msc 并检查命令行;您用于在控制台运行服务器的命令应该非常相似。我认为作为 NT 服务运行的 apache 可能有一个额外的开关,但时间太长我不记得它是什么了。
-
'-k runservice' 没有别的。