在IIS上编码PHP只能直接访问index.php或default.php

时间:2009-08-21 01:53:17

标签: php iis iis-7 filesystems

我正在运行IIS7,并且我处理的时间最长,只能加载index.php。所有其他请求的文件在浏览器中返回“未找到文件”类型的消息。我已经构建了自己的OOP框架,这使得它几乎不是问题。现在我正在做一些ajax的东西。 Ajax 需要 我使用了多个文件,因为如果我只是使用索引文件来获取数据,它还会运行 ALL index.php中的其他代码。因为我使用的是框架,所以一次只运行index.php的选定部分的逻辑是 NOT POSSIBLE 。我甚至使用了我刚才写的一个旧的“内容切换器”。基本上你选择要加载的文件如下:localhost / site / index.php?page = test。 这不起作用。 我不仅发现这种情况恶化,而且我发现IIS会让我在index.php中包含我的注册表类,但不要让我包含测试。 PHP。浏览器返回以下消息:“找不到文件”。 Test.php确实存在。当我键入一个随机不存在的文件名时,我的“内容切换器”中的错误处理程序会抛出自己的自定义错误:“文件不存在”。如果我不知道任何更好的话,我会说IIS正在考虑我的想法。

那么神 f **王的交易是什么?以及如何解决它?

请原谅我使用咒骂,但是经过2天的海峡编码(6小时的睡眠),然后坐在你的屁股上7个小时,没有任何进展可以真正找到你。

在这段时间之后,我仍然设法在编码时遇到最奇怪的问题。按照这个速度,我可能成为有史以来最差的程序员,但却是最好的调试器。

2 个答案:

答案 0 :(得分:1)

这听起来像是IIS配置问题,因此您可以在serverfault.com上获得更好的响应。

是否只有PHP文件无法找到,或者如果你创建了test.html,那还会返回404s吗?

您是否检查过您创建的新文件的文件权限?安全和共享设置?

是否有相关域的HTTP重定向设置?

答案 1 :(得分:0)

经过近10个小时,我发现了它。 IIS7返回404的原因中至少有一个。请记住,这可能是一个非常奇怪的错误。错误的PHP代码:$foo = $_GET['bar'];。仅当“bar”的地址栏中没有提供值时,才会导致404。就像我说的那样,这种行为是愚蠢的,不会影响索引或默认文件。

我无法重新登录,但如果一个mod可以让Rob Drimmie对“答案”有所帮助,因为他的建议帮助我找到了我的解决方案。

非常感谢Rob。