过去,我们为内部网站使用了 Windows XAMPP 服务器。它运行良好,但偶尔会出现一些问题,因此我们决定改用 CentOS 上的 LAMP 服务器。
我们今天进行了切换,但结果 Internet Explorer 忽略了我保存 cookie 的每一次尝试。使用的 URL 中没有下划线...该 URL 实际上与 XAMPP 服务器使用的 URL 相同,我能够毫无问题地保存 cookie。
对我来说这真的没有任何意义,所有的代码都是一样的。唯一需要改变的是 PHP 版本和服务器操作系统。该网站可以在除 IE 之外的所有其他浏览器上运行。
我甚至无法进行简单的 setcookie 调用。在空白测试页上,我使用 setcookie("test", "test", time()+36000, "/"); sleep(5); print_r($_COOKIE); 但那里什么都没有。我们的用户因此无法登录网站,我不知道问题出在哪里。如果有人能提供任何线索或解决方案,我将不胜感激。
显然,简单的答案就是不使用 IE,但在这种情况下这不是一个选择。
答案1
好吧,我找到了问题所在。服务器时钟差了几个小时,我相信 Internet Explorer 严格执行服务器时间。所以所有的 cookie 都立即过期了。
我使用这篇文章来纠正我的服务器时间,现在一切都运行正常。
答案2
据我所知,setcookie 会向页面发送一个标头,通常需要重新加载页面才能使 cookie 可供页面使用。重新加载页面也会产生这种情况吗?
Array ()
或者...问题可能是这样的:https://stackoverflow.com/a/794267