如果目录名称以“ads”开头,则会话不起作用


Sessions not working if directory name starts with "ads"

非常奇怪的错误。 我正在开发计算机上运行 MAMP Pro,我有一个非常简单的测试 PHP 程序,如下所示:

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

该程序在我将其放在服务器上的任何地方工作,从而转储会话变量。 除非目录名称以"ads"开头(然后它只是输出一个空数组)。

http://domain/test.php - works
http://domain/ads/test.php - doesn't work
http://domain/adtest/test.php - works
http://domain/adserve/test.php - doesn't work
http://domain/sads/test.php - works

我没有任何.htaccess文件对"广告"做任何事情。

更新:我做了更多的测试,发现这只发生在Safari上(而不是在Chrome或Firefox中)。 但是Safari是用于此站点的主要浏览器。 如果没有必要,我不想更改整个目录的名称只是为了绕过一些 Safari 怪癖。 我尝试重新启动 Safari 但没有运气。

php 中的会话使用 cookie,因此您需要检查您的 safari 浏览器是否允许 cookie 并将会话 ID cookie 发送回服务器

因此,当我在任何其他浏览器中(包括其他计算机上的 Safari)中都没有遇到这种情况时,我只是从开发机器上的 Safari 中删除了所有相关的 cookie, 一切又开始工作了。 不知道是什么会导致该错误,但至少最终这是一个足够简单的修复。

编辑:几天后问题又回来了,所以我不得不再次删除cookie。 我当然希望这不会发生在其他人的浏览器上。