WordPress3.0になってから、データベースエラーが発生した時の、カスタムメッセージを表示するための、drop-in(s) が動作しなくなっています。
ドロップインによるDBエラーのカスタムメッセージ
drop-in(s)を使っている場合は、プラグインページの「ドロップイン」の項目に表示されます(マルチサイトでは表示されません)
データベースエラー用のカスタムメッセージは、
wp-contentディレクトリに、メッセージをhtml形式で記述したファイルをdb-error.phpという名前で保存すると機能ししていました。
サンプルコード
<?php header( 'HTTP/1.1 503 Service Unavailable' ); header( 'Expires: Wed, 11 Jan 1984 05:00:00 GMT' ); header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); header( 'Cache-Control: no-cache, must-revalidate, max-age=0' ); header( 'Pragma: no-cache' ); header( 'Content-Type: text/html; charset=utf-8' ); ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>データベースエラー</title> <link rel="stylesheet" href="/errors/style.css" type="text/css" /> </head> <body id="error-page"> <h1>503 Service Unavailable - DB Error</h1> <p>ただいまサーバのデータベースに接続できないようです。<br /> 数分後に再度リロードしてみてください。</p> <p>ご不便おかけしますが、よろしくお願いいたします。</p> </body> </html>
しかし、最新のWordPress( 日本語 )では、常に以下のようなメッセージが表示される状態にあります。
データベース接続確立のエラー
これは wp-config.php
ファイルのユーザー名とパスワードが間違っているか、localhost
のデータベースサーバーに接続できないかのどちらかを意味します。ホストのデータベースサーバーがダウンしているのかもしれません。
- ユーザー名とパスワードに間違いはありませんか ?
- ホスト名に間違いはありませんか ?
- データベースサーバーは動いていますか ?
上記の用語の意味が分からない場合は、サーバーの管理者にお問い合わせください。ヘルプが必要であれば WordPress 日本語フォーラム または WordPress サポートフォーラム (英語) へどうぞ。
負荷が高くなって、データベースエラーが出ることもあり、ワードプレスのフォーラムに連絡しろといわれても、解決が出来ません。
WordPress3.4で、一時凌ぎの、コア改変による、ドロップインを有効にする方法をメモに残します。(マルチサイトでは、動作確認していません)
wp-includes/load.php line:668
function wp_load_translations_early() { global $text_direction, $wp_locale;
を、以下のように変更します。
function wp_load_translations_early() { global $text_direction, $wp_locale, $wpdb; dead_db();
global変数 $wpdbを追加して dead_db()を追加します。
関連リンク
https://core.trac.wordpress.org/ticket/16990
Memo
wp-includes/wp-db.php db_connect()