我目前正在尝试在新推出的Windows服务器上运行我的旧网站之一。我们正在使用IIS 8.5,但我在使用Session for PHP的正确设置方面遇到了困难。 在服务器上运行两个版本的PHP,5.4.9和5.6.2。对于他们两个,我在“C:\ inetpub \ temp \ sessions”上设置 session.save_path 。对于此文件夹,我为用户组IUSR,IIS_IUSRS和Users设置了访问权限(写入,删除,运行,创建)。有什么问题,我一直有一些关于启动或清理会话的问题。随机我收到一些错误或警告。其中最后一个就是这个:
Warning: session_regenerate_id(): Session object destruction failed
这个警告经常很安静。我设法运行该网站,但当我尝试登录系统时,没有任何事情发生。登录后,它将我重新定向回登录页面,因为它无法找到并检查用户会话。 另外我试图转储一些数据,我收到了这个错误:
Cannot regenerate session ID after HTTP headers have been sent.
所以我猜,主要问题是会话,而且设置不正确。你能给我一些建议,如何正确设置?或者我可以做错什么?感谢
修改
我只是发现,登录过程中我的会话是空的。我尝试登录,脚本验证我的帐户并将身份保存到会话中。但是当它在登录后重定向到另一个页面时,会话是空的,而且没有用户身份。
重要的是,这个网站已从Linux服务器移出,它正常工作。所以代码没有问题。在PHP或其他任何设置中都必须存在一些问题。
答案 0 :(得分:0)
对于此错误:
发送HTTP标头后无法重新生成会话ID。
通过以下行开始标题或代码的最顶层:
<?php ob_start(); ?>
对于这个:
警告:session_regenerate_id():会话对象销毁失败
你能发布完整的会话代码吗?要检查哪一行更改了会话ID,您的系统无法找到您尝试销毁的会话