Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 奇怪的会话行为-会话失败_Php_Session_Session Cookies - Fatal编程技术网

Php 奇怪的会话行为-会话失败

Php 奇怪的会话行为-会话失败,php,session,session-cookies,Php,Session,Session Cookies,我在PHP和会话中遇到了一个非常奇怪的行为 我正在使用的脚本已经运行了几个月,它在各种PHP版本的服务器上运行 脚本读取URL并根据URL重新路由,例如点击/offer/abc1234.html,它将调用类offer并将abc1234作为参数传递 我创建了一个“故障转移”类,换句话说,如果您编写/abc1234.html,它将测试各种数据库条目,如果它发现一个自动包含该类,就像URL调用它一样,只需要一点额外的开销,区别在于: /offer/abc1234.html::index.php->o

我在PHP和会话中遇到了一个非常奇怪的行为

我正在使用的脚本已经运行了几个月,它在各种PHP版本的服务器上运行

脚本读取URL并根据URL重新路由,例如点击/offer/abc1234.html,它将调用类offer并将abc1234作为参数传递

我创建了一个“故障转移”类,换句话说,如果您编写/abc1234.html,它将测试各种数据库条目,如果它发现一个自动包含该类,就像URL调用它一样,只需要一点额外的开销,区别在于:

  • /offer/abc1234.html::index.php->offer.php->home.php
  • abc1234.html::index.php->error.php->failover.php->offer.php->home.php
现在,考虑到这一切都是有效的,并且已经工作了几个月,我的问题是会话

如果我点击/offer/abc1234.html,我会看到会话集和发送到浏览器的cookie

如果我点击/abc1234.html,会话设置正确,没有错误(E_STRICT+E_ALL),没有警告,没有任何内容,但是cookie不会发送到浏览器。我甚至试着在脚本的末尾打印$\u会话,该会话被填充,除了标题之外,所有变量都是正确的

我尝试过调试它,并在不同的地方添加各种var_dump,但除了header_list()不包含会话_cookie之外,任何地方都没有什么不同,但它确实包含我手动设置的其他cookie:

我目前打印:

  • 会话名称()
  • session_id()-每次刷新时都会更改,但在整个页面上是一致的
  • 会话获取cookie参数()
  • headers\u list()-不包含会话\u start应该具有的设置cookie头
输出类似于:

  • 字符串(6)“QSCSID”
  • 字符串(26)“456disv3pl4u2j81dej6h6d717”
  • 数组(5){[“生存期”]=>int(0)[“路径”]=>string(1)”/“[“域”]=>string(0)”[“安全”]=>bool(false)[“httponly”]=>bool(false)}
  • 数组(4){[0]=>string(38)“Expires:Thu,1981年11月19日08:52:00 GMT”[1]=>string(77)“缓存控制:无存储,无缓存,必须重新验证,后检查=0,预检查=0”[2]=>string(16)“Pragma:no Cache”[3]=>string(68)”设置Cookie:spi=17468;Expires=Sat,2013年10月26日05:02:23 GMT;path=/“}
再一次,我开始发疯了,因为那天早些时候一切都正常,然后我重新启动了apache,它停止了工作

我已经检查了服务器,当我调用abcd1234.html时,文件夹未满,可写,文件已创建且为空

编辑
在处理它时,我开始直接在服务器上通过“ee”(FreeBSD编辑器)打开文件。直到我打开/保存了一个类,没有对文件进行任何更改,我意外地添加了一个空格并将其删除,然后当我退出时,编辑器要求我保存,我答应了

PHP是用eaccelerator编译的,我已经删除了缓存文件夹,并重新启动了apache,看到了文件夹autopoulate。这样的类(failover.php)是一个简单的4函数,其中每个函数都是一个查询,然后构造每次调用一个函数


所以,这似乎是可行的,但我想知道是否有人经历过类似的事情,他们是否知道问题可能是什么

我无法复制它,一旦我在FreeBSD上打开文件并用“ee”关闭,一切都正常了