web-dev-qa-db-ja.com

Wordpress、IIS 7、SQL Server 2008では、投稿が表示されず(「Nothing Found ...」と表示されます)、管理者のみにカウントが表示されます - 修正方法

私は最近IIS 7にWordPressをインストールし、それをSQL Server 2008 R2に接続しました。インストールはうまくいった。

コウモリのすぐそばに、投稿が表示されていることがわかります(数え切れないほど)が、一覧には表示されていません。私はいくつかの投稿を追加しました。

管理者メニューの投稿の下に、6つの公開された投稿「Published(6)」があるのがわかります。しかし、この下のリストは空です。また、カテゴリを選択してサイト上でこれらを表示しようとしています

何も見つかりませんでした

申し訳ありませんが、要求されたアーカイブについて結果は見つかりませんでした。おそらく検索は関連する記事を見つけるのに役立つでしょう。

データベースを再インストールし、PHP/SQLファイルを上書きし、WPを再インストールしました。問題は解決しません。

ここでSettings/Permalinksの提案 を試してみました そして。変化なし。

ここでの提案は、.htaccessファイルに書き込めないことに関連しています。私にとっては問題ではなく、保存できないというエラーも表示されていません。 (確認のため、保存、終了、同じパーマリンクページに移動して設定を保存しました)。

パーマリンクをdefaultに設定し、Web.configの書き換えルールを削除しました。

<?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.phpでSAVEQUERIES = TRUEを設定し、ログファイルにいくつかの投稿の内容を見ることができます。

すなわち。こんにちは!私は日中は自転車メッセンジャー、夜は俳優を志望しています。これが私のブログです。私はロサンゼルスに住んでいます、ジャックという名の素晴らしい犬がいます...

Php_sqlsrv_53_ts_vc9.dll拡張子を有効にし、phpsqlsrv.dllを無効にしました

私は、システムが潜在的なSQLインジェクション攻撃を検出している可能性があるので、いくつかのセキュリティ設定を変更することに関する他の投稿を見ました。しかし、これらの記事はApache関連のインストールに関連しており、私のバージョンでは参照を見つけることができません。

私はこれをWP 3.21で再試行しました - 同じ問題です。

月リンク(3月)をクリックすると、未分類の横の投稿数が表示されます。リンクをクリックすると、Nothing Foundメッセージが再び表示されます。

3.31で再試行したところ、Windows/Temp/php53_errors.logで次のことがわかりました。

[07-Mar-2012 21:00:51 UTC] WordPressデータベースエラー42000:[Microsoft] [SQL Serverネイティブクライアント10.0] [SQL Server] 'wp_users'付近の構文が正しくありません。照会SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '' wp_users '' display_setup_form、pdo_wpdb-> query、pdo_wpdb - > _ post_query、pdo_wpdb-> print_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文は次のようになります。

SELECT TABLE_NAMEをINFORMATION_SCHEMA.TABLESのどこからTABLE_NAMEを 'wp_users'にします。

の代わりに

SELECT TABLE_NAMEをINFORMATION_SCHEMA.TABLESのどこからTABLE_NAMEのように '' wp_users ''

インストールを再試行しました - 問題は解決しませんが、今回はSQLエラーメッセージは表示されません。

- 更新 -

私が WP DB抽象化 でこれを使用していることを言及するのを忘れていました。

wp-content\mu-plugins\wp-db-abstraction\translations\sqlsrv\translations.php

...上これをSQL Serverと連携させる他の方法はありますか?

2
ElHaix

私は同じ問題を抱えていました。私のログファイルから、投稿を返すクエリが壊れているのがわかります。

"wp-includes\query.php"に移動して、クエリから$ limits変数を削除することで、これをうまく機能させることができました。

これはSQL Server上で壊れているようです。

この行を見つけます:

$ this-> request = "SELECT $ found_rows $ distinct $フィールドfrom $ wpdb-> posts $結合WHERE 1 = 1 $ where $ groupby $ orderby $ limits";

への変更:

$ this-> request = "SELECT $ found_rows $ distinct $フィールドfrom $ wpdb-> posts $結合WHERE 1 = 1 $ where $ groupby $ orderby";

これがあなたのために働いたかどうか私に知らせてください。

1
edwardl