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