【问题标题】:php require relative path issues on IIS7.5php需要IIS7.5上的相对路径问题
【发布时间】:2013-08-06 05:43:32
【问题描述】:

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

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

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

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

谢谢

【问题讨论】:

    标签: php wordpress iis


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      你可以尝试使用这个 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>
      

      【讨论】:

        猜你喜欢
        • 2012-12-03
        • 2012-04-21
        • 1970-01-01
        • 1970-01-01
        • 2018-03-26
        • 2014-09-05
        • 2014-03-06
        • 2010-12-04
        • 2015-02-23
        相关资源
        最近更新 更多