WordPress,IIS7,SQL Server 2008,不显示帖子(显示‘找不到...’)并且只在管理中显示计数-如何修复?

时间:2012-03-07 作者:ElHaix

我最近在IIS 7上安装了WordPress,并将其连接到SQL Server 2008R2。安装进行得很顺利。

马上,我就可以看到on post出现了(仅在计数中),但没有列出任何内容;我添加了一些帖子。

在“管理”菜单的“帖子”下,我看到有六篇已发布的帖子“已发布(6)”。但是,下面的列表为空。还尝试通过选择类别返回在网站上查看这些内容

Nothing Found

抱歉,但找不到请求的存档的结果。也许搜索有助于找到相关的帖子。

我已经重新安装了数据库,重写了PHP/SQL文件,并重新安装了WP。问题仍然存在。

我尝试了设置/永久链接建议here 和没有变化。

建议here 与无法写入相关。htaccess文件。这对我来说不是问题,我也没有看到无法保存的错误。(为了验证,我保存、退出、导航到同一永久链接页面,并保存了我的设置)。

我甚至将Permalinks设置为默认值并删除了Web。配置重写规则:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="wordpress" patternSyntax="Wildcard">
            <match url="*"/>
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
                </conditions>
            <action type="Rewrite" url="index.php"/>
        </rule>
     </rules>
    </rewrite>
  </system.webServer>
</configuration>
没有变化。(将其添加回)。

我在wp config中设置savequerys=TRUE。php和我可以在日志文件中看到一些帖子的内容。

嗨,你好!我白天是自行车信使,晚上是有抱负的演员,这是我的博客。我住在洛杉矶,有一只很棒的狗叫杰克。。。

已启用php\\u sqlsrv\\u 53\\u ts\\u vc9。dll扩展并禁用了phpsqlsrv。动态链接库

我看到过其他帖子提到,由于系统可能检测到潜在的SQL注入攻击,因此更改了一些安全设置。但是,这些帖子与Apache相关的安装相关,在我的版本中找不到任何引用。

我用WP 3.21重试了这个问题-同样的问题。

我可以点击月份链接(3月),然后看到未分类旁边的帖子计数。单击链接后,我再次看到Nothing Found消息。

使用3.31重试,并注意到Windows/Temp/php53\\u错误中的以下内容。日志:

[2012年3月7日21:00:51 UTC]WordPress数据库错误42000:[Microsoft][SQL Server Native Client 10.0][SQL Server]在“wp\\U users”附近的语法不正确。对于查询,请从INFORMATION\\u SCHEMA中选择TABLE\\u NAME。表名为“wp\\u用户”的表由display\\u setup\\u form、pdo\\u wpdb->query、pdo\\u wpdb->post\\u query、pdo\\u wpdb->print\\u error生成

安装后,跟踪到wp content\\mu plugins\\wp db abstraction\\translations\\sqlsrv\\translations。php。

在本例中,在表名周围添加额外的单引号是导致错误的原因,因此我注释掉了这行:

    // SHOW TABLES
    if ( strtolower($query) === \'show tables;\' ) {
        $query = str_ireplace(\'show tables\',"select name from SYSOBJECTS where TYPE = \'U\' order by NAME",$query);
    }
    if ( stripos($query, \'show tables like \') === 0 ) {
        $end_pos = strlen($query);
        $param = substr($query, 17, $end_pos - 17);
        // quoted with double quotes instead of single?
        $param = trim($param, \'"\');
        if($param[0] !== "\'") {
            //$param = "\'$param\'";          <----------- commented out
        }
        $query = \'SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE \' . $param;
    }
现在,SQL语句读取

从INFORMATION\\u SCHEMA中选择TABLE\\u NAME。TABLE\\u名称类似“wp\\u users”的表

而不是

从INFORMATION\\u SCHEMA中选择TABLE\\u NAME。TABLE\\u名称如“wp\\u users”的表

重试安装-问题仍然存在,但这次没有SQL错误消息。

-- Update --

忘了提一下我正在用这个WP DB Abstraction (由…暗示)。。。

wp content\\mu plugins\\wp db abstraction\\translations\\sqlsrv\\translations。php

。。。在上面有没有其他方法可以让它与SQL Server一起工作?

1 个回复
最合适的回答,由SO网友:edwardl 整理而成

我也有同样的问题。从我的日志文件中,我可以看到它在返回帖子的查询中被破坏。

通过转到“wp includes\\query.php”,然后从查询中删除$limits变量,我成功地实现了这一点。

sql server上似乎出现了这种情况。

查找此行:

$this->request=“从$wpdb中选择$found\\u rows$distinct$字段->posts$join WHERE 1=1$WHERE$groupby$orderby$limits”;

更改为:

$this->request=“从$wpdb中选择$found\\u rows$distinct$字段->posts$join WHERE 1=1$WHERE$groupby$orderby”;

如果这对你有用,请告诉我。

结束

相关推荐

如何使RSS提要在IIS 7下工作?

正在运行IIS 7和WP 3.0。我有一个网站。配置有必要的重写规则以使永久链接正常工作,并且它们正在正常工作。然而,如果我指向n-nexus。realtimepublishers。com/内容/?feed=rss2,服务器首先生成HTTP 404。奇怪的是,它随后提供RSS提要。问题是最初的404让FeedBurner和Safari呕吐;Firefox正确显示提要(不过,您可以在Live HTTP头中看到404错误)。我到底是什么配置不正确?更新:禁用所有插件。没有变化。喝倒采