我的wordpress插件将cookie设置为:
setcookie($key,json_encode($something),0,'/');
通常可以使用,但不适用于特定用户的网站。在var_dump($_COOKIES);
调用之后立即执行setcookie()
,表明相关的cookie存在于数组中,但是响应头中没有setcookie。在网站的公共端设置的其他Cookie(不是管理控制台)也应由我的插件设置,也无法使用。
用户安装了一个缓存插件,但是即使页面请求根本没有命中任何缓存,这个问题仍然存在。
在活动主题中从functions.php
文件设置测试cookie起作用。
可能导致问题的原因以及对此的潜在解决方案或进一步调试方法?
放置在网站其他位置的代码(例如functions.php或wordpress核心)可能会在响应返回到浏览器之前修改标头。
尝试设置cookie,然后转储cookie,然后死亡,然后查看浏览器的响应头:
setcookie($key,json_encode($something),0,'/');
var_dump($_COOKIES);
die();
如果它按预期工作,则可以在代码执行过程中进一步移动die();
部分,直到找到有冲突的代码。
否则,PHP开发中的更好方法是在JetBrains IDE中使用PHP异常断点,您可以在其中添加断点,并且在每个断点处,您都可以看到php超全局变量,例如$ _COOKIE