在使用CGI程序时,有一个IIS错误会导致标题出现问题,并且会将重定向设置为返回http 302(Object Moved)的页面。结果是IIS不解析标头,因此如果您尝试设置cookie,它将不起作用。请参阅KB Article
它说解决方案是使用-nph(非解析标头)启动EXE CGI - 但我不确定它是否适用于PHP。我尝试将它添加到我的php文件并手动构建标题,但这对我不起作用..
有人有这个问题吗?有什么好的解决方法吗?
答案 0 :(得分:1)
我不完全确定你在现代时代如何看待这个错误。
首先,Q17 ......,呃,我的意思是,KB176113发表于 1997 。这些示例列出 IIS 2.0 作为受影响的产品,文章本身声称仅版本3-5受到影响。除非您在 Windows 2000 上运行您的站点,否则您不使用IIS5。谷歌的这篇文章和一些时间表明这个问题在IIS6及更高版本中完全得到了解决。
其次,该bug只影响CGI脚本。如果你使用PHP与IIS,那么你要么使用ISAPI DLL(如果你是,我所以抱歉),或者你正在使用FastCGI,尽管有三个共同的字母,实际上不是CGI。自从......以来,没有人在IIS上以CGI模式运行PHP。
你不是使用IIS5,是吗?
好的,如果您不在IIS7上,则可能无法在FastCGI模式下运行。 You should totally switch to FastCGI与现代PHP版本。微软花了很多时间和精力让PHP和FastCGI与IIS很好地协同工作。
第三,在每个平台上的每个浏览器中设置cookie中间重定向都是错误的。你确定实际上没有发送cookie头吗?检查浏览器的开发工具。
答案 1 :(得分:0)
使用nph-而不是-nph对PHP文件进行前缀解决了这个问题。
e.g. nph-test.php