我的项目在本地服务器上可以正常运行,但在生产服务器上无法正常工作,因为服务器无法看到cookie。我已经制作了一个最小化的代码版本,在该服务器上重现了该问题:
<?php
if(!isset($_COOKIE['foo'])){
setcookie('foo', 'bar', time() + 7*24*60*60, '/');
echo "Cookie was not found, so we just created it.";
} else {
echo "Cookie was found!";
}
?>
无论我刷新这个页面多少次,都会收到“未找到”消息。每当我尝试记录 $_COOKIE
变量时,都会得到一个空数组。但是:
- Cookie存在于浏览器中,并与请求正确发送
- Cookie在同一文件中设置和读取(不是
path
的问题) - 在
setcookie
之前没有输出,文件以UTF8编码而无BOM
如果您需要更多信息,请告诉我,我会将其添加到我的问题中。谢谢!
variables_order
指令。其中是否缺少了字母C
?http://php.net/manual/en/ini.core.php#ini.variables-order - Michael Berkowskivariables_order = EGPCS
。 - blexdata:text/html, <form method="post"...
页面),用var_dump($_COOKIE)
显示为[]
。直接发送 GET 请求的方式打开相同的页面会正确显示 cookie。使用method="put"
、method="delete"
、method="get"
等方法均可以正常工作。 - user10398534