コンテンツにスキップ

WordPress の設定ファイル wp-config.php の解説

メインイメージ

WordPress の重要な設定ファイルである wp-config.php についてまとめました。

wp-config.php とは?

wp-config.php は WordPress の設定ファイルです。 データベース接続情報・セキュリティキー・デバッグモードなどの設定が記述されたファイルで、 WordPress サイトが動作するのに無くてはならないファイルです。

通常 WordPress のインストール手続きを行うと wp-config.php が自動生成されます。 インストール後のサイト運用中は基本的に wp-config.php ファイルを編集する必要はありませんが、デバッグで設定の変更が必要な場合などに稀に手作業での編集が必要になることがあります。

wp-config.php の設置場所

wp-config.php ファイルは通常 WordPress のインストールディレクトリに配置されます。

wp-config.php を WordPress のインストールディレクトリの一つ上の階層に配置した場合でも WordPress は wp-config.php ファイルを認識してくれます。 これは WordPress のインストールディレクトリが Apache の DocumentRoot になっていて、そのひとつ上の階層は Apache がウェブに公開していない構成の場合にセキュリティの強化に繋がります。

関連ページ: WordPress で wp-config.php をインストールディレクトリの外に移動する方法とそうすべき理由

wp-config.php が外部から閲覧されるとセキュリティ上まずい理由

wp-config.php ファイルには通常データベースの接続情報とセキュリティキー・ソルトが含まれるため、外部から閲覧されてしまうとセキュリティ上問題があります。 具体的には以下のようなリスクがあります。

  1. データベースへの不正アクセス
  2. サイトの乗っ取り・改ざん
  3. ユーザー情報の漏洩
  4. 他サイトへの攻撃にサイトが悪用される

そのため、 WordPress サイトの運用においては wp-config.php ファイルの中身が外部に漏洩しないよう適切にアクセス制限・設定を行うことがセキュリティ上非常に重要です。

wp-config.php の中身の解説

wp-config.php ファイルには上から順に以下の内容が含まれています。

  1. データベース接続情報
  2. セキュリティキー・ソルト
  3. データベーステーブルプリフィックス
  4. 独自の処理
  5. 設定用の定数
  6. ABSPATH 定数
  7. 他ファイルの読み込み

以下順に見ていきましょう。

1. データベース接続情報

MySQL (または MariaDB )のデータベースに接続するための情報です。 WordPress はこれらの情報を使ってデータベースに接続します。

define( 'DB_NAME', 'データベース名' );
define( 'DB_USER', 'データベースユーザー名' );
define( 'DB_PASSWORD', 'データベースパスワード' );
define( 'DB_HOST', 'ホスト' );
define( 'DB_CHARSET', '文字セット' );
define( 'DB_COLLATE', 'collation (称号順序)設定' );

2. セキュリティキー・ソルト

セキュリティ関連のキーとソルトです。 これらは WordPress の認証システムや nonce などで使用されます。

define( 'AUTH_KEY', 'キー' );
define( 'SECURE_AUTH_KEY','キー' );
define( 'LOGGED_IN_KEY','キー' );
define( 'NONCE_KEY','キー' );
define( 'AUTH_SALT','ソルト' );
define( 'SECURE_AUTH_SALT', 'ソルト' );
define( 'LOGGED_IN_SALT', 'ソルト' );
define( 'NONCE_SALT', 'ソルト' );
define( 'WP_CACHE_KEY_SALT', 'ソルト' );

万が一キーとソルトが外部に漏れてしまった(または漏れた可能性のある)場合は、キーとソルトに新しい値を入れてリセットするようにしてください。

関連ページ: WordPress でシークレットキーやソルトを変更する方法

3. データベーステーブルプリフィックス

WordPress が利用する MySQL データベースのテーブル名のプリフィックスです。 同じデータベースを他の WordPress サイトやアプリケーションと共有しなければならない場合に、固有のプリフィックスを付けることで他のサイトやアプリケーションとのテーブル名の衝突を避けることができます。

$table_prefix = 'wp_';

Note

ときどき「テーブルプリフィックスを複雑にするとセキュリティ改善の効果がある」と言われることがありますが、クラッカーがデータベースに接続できた時点でテーブルプリフィックスは調べればすぐにわかってしまうので、テーブルプリフィックスを複雑にしてもセキュリティ改善の効果はほとんどありません。

4. 独自の処理

サイト固有の独自の設定です。 例えばリバースプロキシの後ろで動く WordPress サイトでは wp-config.php に次のような記述をすることがあります。

# リバースプロキシの後ろにいる WordPress に HTTPS が有効であると認識させる
if ( ! empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && 
  $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {
  $_SERVER['HTTPS'] = 'on';
}

5. 設定用の定数

WordPress が提供するさまざまな設定用の定数の定義です。 言語設定やサイトの URL 、デバッグモード、キャッシュ設定などさまざまな用途のための定数が定義できます。 以下定数の例です。

言語設定

# サイトの言語を日本語にする
define( 'WPLANG', 'ja' );

デバッグ設定

# デバッグモードを有効にする
define( 'WP_DEBUG', true );
# デバッグログをファイルに出力する
define( 'WP_DEBUG_LOG', '/tmp/wp-degug.log' );

メモリ使用量

# 最大メモリ使用量を 256MB にする
define( 'WP_MEMORY_LIMIT', '256M' );

6. ABSPATH 定数

定数 ABSPATH の定義です。 ABSPATH の定義の上にはデフォルトで「 That' all, stop editing! Happy publishing. 」というコメントが記述されています。 文章の意味そのままですが、 wp-config.php ファイルを編集するときはこの行よりも上の部分だけを編集し、この後の部分には変更を加えないことが重要です。

/* That's all, stop editing! Happy publishing. */

/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
    define( 'ABSPATH', __DIR__ . '/' );
}

7. 他ファイルの読み込み

ファイルの最後に wp-settings.php ファイルを読み込む記述があります。

/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';

wp-config.php 周りのセキュリティ改善策

wp-config.php ファイルは非常に重要なファイルであるため、例えば以下のようなセキュリティ改善策の実施が推奨されます。

確認時のバージョン

  • WordPress 6.6.2

WordPress.org 参考ページ

関連ページ