我遇到了PHP和会话的非常奇怪的行为。
我使用的脚本已经工作了几个月,它正在使用各种PHP版本的各种服务器。
脚本读取URL并根据URL重新路由,例如点击/offer/abc1234.html它将调用类商品并将abc1234作为参数传递。
我创建了一个“故障转移”类,换句话说,如果你编写/abc1234.html它将测试各种数据库条目,如果它发现一个自动包含该类,如果它被URL调用,只需要一些额外的开销,不同的是:
现在,鉴于这一切都有效并且已经工作了几个月,我的问题在于会话。
如果我点击/offer/abc1234.html,我会看到会话集并将cookie发送到浏览器
如果我按下/abc1234.html会话设置正确,没有错误(E_STRICT + E_ALL),没有警告,没有任何内容,但cookie没有发送到浏览器。我甚至尝试在脚本末尾打印$ _SESSION,并填充会话并且除了标题之外所有变量都是正确的。
我尝试调试它并在各个地方添加各种var_dump,但除了header_list()从不包含session_cookie之外没有什么不同,但它确实包含我手动设置的其他cookie:
我目前正在打印:
输出类似于:
再一次,由于一切都在当天早些时候工作,我变得疯狂,然后我重新启动了apache并且它停止了工作。
我已检查过服务器,文件夹未满且可写,文件已创建,当我调用abcd1234.html时文件为空
修改
在处理它时,我开始直接在服务器上通过“ee”(FreeBSD编辑器)打开文件。在我打开/保存课程之前没有任何事情发生,没有对文件进行任何更改,我不小心添加了一个空格并将其删除,然后当我退出时,编辑要求我保存并且我说是。
PHP是使用eaccelerator编译的,我已经删除了缓存文件夹以及重新启动的apache并看到该文件夹自动填充。这样的类(failover.php)是一个简单的4函数,其中每个函数都是一个查询,然后构造每次调用一个函数。
所以,它似乎有效,但我想知道是否有人经历过这样的事情,如果他们知道问题可能是什么
答案 0 :(得分:0)
我无法复制它,一旦我打开文件并在FreeBSD上以“ee”关闭一切正常。