1

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

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

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

谁能给我任何帮助以使 './' 相对路径适用于 Wordpress?

谢谢

4

2 回答 2

1

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

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

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

于 2013-08-06T13:16:58.573 回答
-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>
于 2014-11-14T07:49:04.813 回答