PHP setcookie()不总是覆盖值

PHP setcookie()不总是覆盖值,php,ajax,cookies,Php,Ajax,Cookies,我一直在为一个间歇性的问题烦恼。我正在剖析这个问题,但由于时断时续,需要一段时间。我发现了一个可行的方法,我只是不知道为什么,它让我感到困扰,也许有人可以找出一个模式并猜测原因: 摘要:这一行并不总是有效: setcookie('myhash',$aHash,0,MYSUBDIR); Background:当我在一段时间后回到电脑,打开Firefox标签并执行类似add to basket的AJAX调用后,这种情况经常会发生。(WAMP服务器,本地主机,由本地IP 192.x.x.x访问,未在

我一直在为一个间歇性的问题烦恼。我正在剖析这个问题,但由于时断时续,需要一段时间。我发现了一个可行的方法,我只是不知道为什么,它让我感到困扰,也许有人可以找出一个模式并猜测原因:

摘要:这一行并不总是有效:

setcookie('myhash',$aHash,0,MYSUBDIR);
Background:当我在一段时间后回到电脑,打开Firefox标签并执行类似add to basket的AJAX调用后,这种情况经常会发生。(WAMP服务器,本地主机,由本地IP 192.x.x.x访问,未在其他地方测试)。之后,我打开调试输出并可以刷新页面等,但cookie从未设置。包括ajax在内的所有页面都位于MYSUBDIR或其子目录中

调试步骤:我非常小心地确保页面的调试输出和所有其他输出都被发送到缓冲区:我先调用
ob\u start()
,然后调用
ob\u end\u flush()
。从其他SO问题来看,这似乎是常见的失败

我发现的解决方法是在上面提到的行之前添加这一行:

setcookie('myhash',$aHash,time()-1000);
奇怪的是,使用这一行而不是上面的解决方法不起作用:

setcookie('myhash',$aHash,time()-1000,MYSUBDIR);
关于原因的思考:

  • 是否有时不总是设置
    MYSUBDIR
    常量,因此可能默认设置路径为“/”的cookie-尽管我向E_ALL、verbose output和DB报告了错误,并且没有看到任何此类错误记录
  • “myhash”cookie键是硬编码的,并且只在代码中的一个位置,所以我认为这不是问题所在-此外,我调用
    var\u dump($\u cookie)
    (在
    ob\u start()
    之后)并没有发现cookie键有任何问题
  • cookie权限:通过IP和“localhost”进行访问:我不认为是这样,因为在一个页面加载中,我读取并尝试设置(覆盖)cookie。我可以通过刷新页面重复执行此操作,并且页面会不断显示我无法覆盖的值

  • 有人能找出无法覆盖cookie的可能原因吗?

    setcookie('myhash','',time()-1000,MYSUBDIR)工作?有没有想过?我也有同样的事情,记忆cookie没有被覆盖?