php需要IIS7.5上的相对路径问题

时间:2013-08-05 13:33:26

标签: php wordpress iis

我不确定哪个网站最适合这个问题 - 这可能是IIS配置问题。 我在运行IIS7.5的全新2008R2服务器上运行Wordpress时遇到问题。我收到一条错误消息,指出找不到所需的文件:

  

PHP致命错误:require():需要打开失败   './wp-blog-header.php'(include_path ='。; C:\ php \ pear')in   第17行的D:\ path \ to \ my \ site \ _blog \ index.php

浏览网页后,我发现很多人都遇到了这个问题,并通过删除require语句的“./”部分来修复它。我也看到人们在require语句之前使用各种PHP函数或设置全局变量的建议 - 但是我觉得这不是一个好的解决方案。整个Wordpress使用相同的语法,需要在许多文件中替换。此外,如果我更新网站,问题将再次发生。我需要一个不涉及在Wordpress核心中编辑任何内容的解决方案。 我在R1(IIS7)服务器上以及我本地的Win 7机器上都没有遇到任何问题 - 我在R2服务器上看到的第一个这个问题。

任何人都可以帮我找到适用于Wordpress的'./'相对路径吗?

由于

2 个答案:

答案 0 :(得分:1)

原来这是一个权限问题。 似乎为了使'./your_filename.php'工作,用户PHP正在运行,因为需要对文件夹具有“列出文件夹内容”权限 - 即使文件是直接指定的。

最后,完整的解决方案包括关闭快速CGI模拟,让PHP作为应用程序池标识运行,并提供对wordpress文件夹的更多访问权。

在关于SO的问题中有一些关于此的信息 - 我现在似乎无法找到它,但如果我再次遇到它,我会在答案中链接到它。

答案 1 :(得分:-1)

您可以尝试使用此web.conf

    <?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="{R:2}" />
                </rule>
                <rule name="WordPress Rule 7" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>