5

2日前にWordpress 3.5にアップグレードしました。私は多くのプラグインを使用していませんが、GoDaddy は私のプラグインが正しく機能していることを保証してくれます。ただし、ブログ投稿でこのエラー メッセージが表示されるのは初めてです。

これを解決するのを手伝ってもらえますか?

警告: wpdb::prepare() の引数 2 がありません。/home/content/52/8331652/html/wp-content/themes/chateau-2.0/functions.php の 91 行目で呼び出され、/home/content/ で定義されています。 52/8331652/html/wp-includes/wp-db.php 990 行目

投稿の上部の画面の右側にこの問題があるページの 1 つを次に示します

あなたが提供できる洞察に感謝します。

4

5 に答える 5

9

WordPress 3.5 では、 SQL インジェクションなどの特定のセキュリティ リスクを軽減するためにいくつかの大きな変更が行われました。wpdb::prepareプラグイン開発者が引数を分離する代わりに完全なクエリを送信していたため、このメソッドは安全に使用されていませんでした。これは、「準備された」ステートメントが準備されておらず、実際にはパラメーターをクエリに直接渡していることを意味し、これはセキュリティのノーノーです。3.5 の時点で、このメソッドは 3 つの引数を取るようになりました。

当面の問題に対処するには、php.ini ファイルを編集し、行を見つけてerror_reporting次のように変更します...

error_reporting(E_ALL & ~(E_NOTICE|E_WARNING));

サーバーを再起動します。

これにより、すべてのマイナー スクリプト エラーが報告されなくなります。

または、エラーをログ ファイルに送信します。php.ini で、この行を見つけて (コメントを外して)、次のように変更します。

error_log "/path/to/php-error.log"

これにより、Web サイトにエラーが表示されなくなります。代わりに、あなただけが見ることができるログに書き込まれます。

このエラーが気になる場合は、不正なプラグインにダミーの値を使用させようとすることができます。wpdb::prepareメソッドが 3 つの引数を取ることがわかります...

$wpdb->query( 
    $wpdb->prepare( 
        "
            DELETE FROM $wpdb->postmeta
            WHERE post_id = %d
            AND meta_key = %s
        ",
        13, 'stack overflow' 
    )
);

影響を受けるプラグインnullがメソッドの 2 番目と 3 番目の引数として a を送信するようにすると、問題が完全に修正されます。

于 2012-12-19T16:37:52.253 に答える
4

wp-config.php に次の行を追加します。

@ini_set('display_errors', 0);

テーマ/プラグインが新しい WordPress API に正しくアクセスしていません。それでも機能しますが、エラー警告が生成されます。長い説明をご覧ください。

于 2012-12-19T15:22:43.680 に答える
1

functions.php で、クエリの後に "" をパラメーターとして追加します。

于 2013-01-16T06:31:06.933 に答える