- 実践 WordPress ホーム
- 管理画面 / 設定
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
ファイルには通常データベースの接続情報とセキュリティキー・ソルトが含まれるため、外部から閲覧されてしまうとセキュリティ上問題があります。
具体的には以下のようなリスクがあります。
- データベースへの不正アクセス
- サイトの乗っ取り・改ざん
- ユーザー情報の漏洩
- 他サイトへの攻撃にサイトが悪用される
そのため、 WordPress サイトの運用においては wp-config.php
ファイルの中身が外部に漏洩しないよう適切にアクセス制限・設定を行うことがセキュリティ上非常に重要です。
wp-config.php
の中身の解説
wp-config.php
ファイルには上から順に以下の内容が含まれています。
- データベース接続情報
- セキュリティキー・ソルト
- データベーステーブルプリフィックス
- 独自の処理
- 設定用の定数
ABSPATH
定数- 他ファイルの読み込み
以下順に見ていきましょう。
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 サイトやアプリケーションと共有しなければならない場合に、固有のプリフィックスを付けることで他のサイトやアプリケーションとのテーブル名の衝突を避けることができます。
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( 'WP_DEBUG', true );
# デバッグログをファイルに出力する
define( 'WP_DEBUG_LOG', '/tmp/wp-degug.log' );
メモリ使用量
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
ファイルを読み込む記述があります。
wp-config.php
周りのセキュリティ改善策
wp-config.php
ファイルは非常に重要なファイルであるため、例えば以下のようなセキュリティ改善策の実施が推奨されます。
- A)
wp-config.php
ファイルへの直アクセスを拒否する - B)
wp-config.php
ファイルを一つ上の階層に移動する - C) 定期的にバックアップを取る
確認時のバージョン
- WordPress
6.6.2