使用PHP 4.4.7时不设置Cookies,但是在使用PHP 5.2.9时它们会这样做 - 任何想法为什么?

时间:2009-09-30 02:59:34

标签: php cookies

所以我一直在为他们当前网站上的客户开展一个项目,该项目已经存在了很长一段时间。使用的PHP版本是4.4.7,我无法要求他们升级。 (系统很老,可能会破坏一些东西)上周我对我的项目进行了一些更改,一切都工作得很好,页面工作正常。我之前去测试网站,突然间cookie不再起作用。经过2个小时的故障排除后,我终于设置了一个简单的测试页面:

<?php
setcookie('eventCookie','1', time()+7200,'/','.levijackson.net');
echo $_COOKIE['eventCookie'];
?>

我把它放在他们的网站上以及我自己的网站上(我将.levijackson.net更改为相应的域名)

我在两个页面上都刷了两次页面,只有在我的页面上它才会返回cookie。那会是什么导致这样的事情呢?是否有某个设置可能已由其管理员/主持人更改?

我做了测试,HttpOnly cookies仍然有效,所以在我排除故障时我会切换到它们。

编辑:几乎忘了提及,它在FF中工作正常,但在Chrome和IE中它根本不起作用。不确定这是否有用,但我仍然认为它不是浏览器。

感谢
列维

1 个答案:

答案 0 :(得分:2)

只是一个猜测 - 可能是他们的服务器已启用auto_prepend_file,并且正在自动添加的文件会向客户端输出内容。一旦任何发送到客户端,set_cookie()将无效,因为必须在页眉中设置cookie,必须在将任何内容发送到客户端之前发送。

如果不是这样,请尝试区分phpinfo()转储的“PHP Core”部分,查找可能以某种方式影响此设置的任何其他设置。

修改:如果两个网站都是公开可访问的,那么您可以尝试其他内容。到这里:http://web-sniffer.net/。该站点将显示站点返回的实际HTTP标头。运行两个站点的测试文件,并查看返回的Set-Cookie标头是否有任何差异。