为什么任何.php页面在IIS 7.0上给我一个404错误?

我正在使用FastCGI来设置PHP。 我遵循iis.net网站上的说明。 我添加了处理程序映射,按照指定编辑了php.ini文件。 它没有任何作用,我只是得到一个404.0错误,说“您正在寻找的页面已被删除”,即使错误页面上显示的物理path存在。 尝试这个手动方法后(解压php,手动添加句柄映射等),我删除了一切,我尝试了networking平台安装程序(唉),但我仍然有同样的问题。

多一点信息:
详细错误页面说处理程序是我的StaticFile处理程序(而不是PHP FastCGI)。 它也给错误代码0x80070002

当我查看日志时,显示“GET / php.ini”为404错误。 为什么IIS在寻找?

当我得到这个错误信息时,我注意到我甚至没有在C:\ Program Files \ PHP目录下的php-cgi.exe文件。

我发现的其他有用的方法是,如果您正在获取FastCGI错误,请尝试直接双击php-cgi.exe文件,然后在Windows应用程序日志中查找是否崩溃。 我从一个PHP Bug报告中得到了这个评论:

[2010-04-22 06:43 UTC] sejo at iteontech dot com

在debuggingIIS和其他一些疯狂的东西之后,这对我来说是有效的。 我在Windows 7和IIS 7上安装了PHP 5.3.2。尝试执行PHP-CGI.EXE(BY DOUBLECLICKING ON IT)。 看看你是否得到任何错误消息/popup窗口。 我得到了一大堆,这一切都打开了一堆扩展打开,但没有在我的ext文件夹中可用。 清除那些无效的扩展PHP.INI,问题应该消失。

默认情况下,IIS不会为任何没有有效的MIMEtypes映射的文件提供服务,并将404响应

如果.php扩展名没有为您要运行PHP的网站定义的MIMEtypes,那么即使该文件types有相关处理程序,IIS也不会提供该文件。

刚刚检查了我的服务器上的IIS 7pipe理器,默认情况下在MIMEtypes列表中没有映射,我怀疑如果您的网站存在之前,您安装FastCGI它不会自动添加映射到现有的网站,而当您创build新的网站FastCGI已经安装。

我当然可以完全错误的最后一点,但文件扩展名为MIMEtypes映射问题是IIS的安全function – 没有映射=没有文件与该扩展

那么,我不知道我做了什么,但不知怎的,我修好了。 我删除了网站并重新添加,然后检查了我的FastCGI映射设置,一切看起来都像以前一样,但这次它工作。 我仍然想知道为什么如果可能的话,我得到了错误。

我对这个错误的解决scheme有两个部分:

  1. (从@ icc97的答案) – 双击php-cgi.exe在你的PHP文件夹,以确保它可以启动正常。
  2. 事实certificate,我的index.php文件真的名为index.php.htm (closures“隐藏文件扩展名”)

只是想添加愚蠢的答案包装任何人find这个问题与同样的问题。 “配偶”在服务器上创build了testing文件。 他得到了404错误。 发生了什么事,是Windows隐藏文件扩展名,所以该文件实际上被称为index.php.txt …不是一个有趣的30分钟。

我处理了一个类似的问题,我在网上find的所有回复都无济于事。 首先,我假设你已经尝试运行http://yourservernamehere/check.php ,一切似乎都恢复正确。 如果是这种情况,我会build议检查你的php.ini文件中的设置:

[Date]; 定义date函数date.timezone =使用的默认时区

最有可能的是像我一样的空白,这将产生一个愚蠢的错误更新版本的PHP和任何原因,你将死在水中,直到你有一个指定的时区(我的是美国/芝加哥)。

我可能会假设很多关于你的情况,但是这听起来和我的很相似,我花了好几天的时间挫败地寻找答案。

是否有任何理由不使用安装程序来为您工作?

另外,你能确认.php处理程序映射是否正确设置?

 Path : *.php State : Enabled Path Type : File or Folder Handler : FastCgiModule 

我今天有这个问题,但以上的修复没有为我工作。 我在IIS中打开详细的error handling,发现我收到一个404.7错误:“请求过滤模块configuration为拒绝文件扩展名”。

我进入IISpipe理器中的“请求过滤”菜单,将“.php”添加为批准的文件types,这解决了我的问题。