WordPressのwp-config.phpファイル:役割と安全な編集方法
wp-config.phpにはWordPressのデータベース情報、セキュリティキー、サイト設定が入っています。場所、各部分の役割、安全な編集方法を解説します。
wp-config.phpは、データベースへの接続方法と動作方法をWordPressに伝えるファイルです。通常はインストール先のルートフォルダで、wp-adminやwp-contentと同じ場所にあります。設定の追加や変更は「That’s all, stop editing!」(「これで終わりです。編集はここまで」)の行より上なら安全に行えます。その行より下にある2つのコードブロックは触らないでください。タイプミス1つでサイト全体が止まることがあるので、先にバックアップを取りましょう。
重要なポイント
- このファイルにはデータベースのパスワードとセキュリティキーが入っています。パスワードと同じように扱い、中身をフォーラムやサポートチャットに貼らないでください。
- 独自の設定は「stop editing」の行より上に書きます。この行より下の最後の行がWordPressを読み込むため、それより後の設定では遅すぎます。
- WordPressのダウンロードに含まれているのは
wp-config-sample.phpです。本物のwp-config.phpはセットアップ中に作られます。- 稼働中のサイトで、その行だけを編集して
$table_prefixを変えないでください。WordPressは未インストールのように動作します。
wp-config.phpの場所
SFTPで接続するかホスティング会社のファイルマネージャーを開き、wp-admin、wp-includes、wp-contentがあるフォルダに移動します。WordPressのドキュメントでは、ここをWordPressファイルディレクトリのルートと呼んでいます。
そこになければ、1つ上のフォルダを見てください。WordPressのローダーはまずインストール先のフォルダを確認し、次に親フォルダを確認します。親フォルダに独自のwp-settings.phpがある場合は、別のWordPressがインストールされているという意味なので、親フォルダはスキップします。
どちらにもファイルがなければ、WordPressは訪問者をセットアップ画面に送ります。この画面はwp-config-sample.phpをもとにファイルを作ります。フォルダに書き込めない場合は、新しいファイルに手で貼り付けるためのテキストを表示します。
デフォルトの各セクションの役割
wp-config-sample.phpがテンプレートで、次の部分がこの順に並んでいます。
| セクション | 内容 | 変更できますか? |
|---|---|---|
DB_NAME, DB_USER, DB_PASSWORD, DB_HOST | データベースのログイン情報。サンプルではホストはlocalhostで、実際の値はホスティング会社が教えてくれます。 | はい、データベース情報が変わったときに。値が間違っているとデータベース接続確立エラーが起きます。 |
DB_CHARSET, DB_COLLATE | データベースのテキストの保存方法。デフォルトはutf8mb4と空の値です。 | サンプル内のDB_COLLATEのコメントには、わからなければ変更しないようにとあります。 |
AUTH_KEYからNONCE_SALTまで | ログインCookieに使われる8つのセキュリティキーとソルト。 | はい。変更すると全ユーザーがログアウトします。 |
$table_prefix | 各データベーステーブル名の先頭につく文字列。デフォルトはwp_です。 | インストール時のみ。テーブル名を変更し、名前にこの接頭辞を含むデータベースの保存済み項目も更新するなら別です。 |
WP_DEBUG | デバッグモード。サンプルではfalseです。 | はい。デバッグログの場所のガイドで、エラーをファイルに送る方法を説明しています。 |
| 「custom values」(「カスタム値」)のコメント | 独自の設定を書くための空きスペースで、「stop editing」の行で終わります。 | はい、追加する設定はここに書きます。 |
ABSPATHとwp-settings.phpの行 | WordPressへのパスと、残りすべてを読み込む行。 | いいえ。そのままにしてください。 |
新しいキーはワンクリックで手に入ります。WordPress.orgのシークレットキーサービスは、読み込むたびに新しいセットを表示します。8行すべてを新しいセットに置き換えてください。
古いファイルには「custom values」のコメントがなく、「Happy publishing」ではなく「Happy blogging」と書かれていることがあります。どちらも問題なく動作し、ルールは同じです。設定はその行の上に追加します。
よく変更される設定
どれも1行で設定できます。すべてwp-config.phpのドキュメントにあるもので、デフォルト値はWordPressのdefault-constants.phpに基づいています。
// Memory for the front end, then for wp-admin
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
// Keep at most 3 revisions per post (false turns revisions off)
define( 'WP_POST_REVISIONS', 3 );
// Autosave every 180 seconds
define( 'AUTOSAVE_INTERVAL', 180 );
// Empty the trash after 7 days
define( 'EMPTY_TRASH_DAYS', 7 );
// Remove the theme and plugin file editor from wp-admin
define( 'DISALLOW_FILE_EDIT', true );
// Force HTTPS for logins and wp-admin
define( 'FORCE_SSL_ADMIN', true );
// Set the site addresses here
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );
必要な行だけをコピーしてください。いくつかには知っておきたい点があります。
- メモリ: WordPressのデフォルトは40M(マルチサイトでは64M)で、wp-adminは256Mです。ただしPHPがすでにそれ以上を許可している場合は別です。ホスティング会社が上限の変更を許可していない場合、WordPressはPHPの既存の上限を使います。その場合の対処はメモリ不足エラーのガイドで説明しています。
- リビジョン: デフォルトで有効です。
falseで無効にするか、数値で上限を設定します。 - 自動保存とゴミ箱: デフォルトは60秒と30日です。
EMPTY_TRASH_DAYSを0にするとゴミ箱は無効になります。ドキュメントは、その場合「Delete Permanently」(「完全に削除する」)をクリックしてもWordPressが確認を求めなくなると警告しています。 - ファイルエディタ: ハードニングガイドによると、これで攻撃者による悪意あるファイルのアップロードは止められませんが、一部の攻撃は止められるかもしれません。
DISALLOW_FILE_MODSはさらに強力で、プラグインとテーマのインストールと更新も禁止します。 - HTTPS: 「WordPress アドレス」の設定がすでに
httpsで始まっていれば、WordPressが自動でFORCE_SSL_ADMINをtrueにします。この行で何かが変わるのは、アドレスがhttpsで始まっていないときだけです。 - サイトアドレス: 保存された値を上書きしますが、データベースの内容は変わりません。
https://の部分も含めてください。
1つだけ計画が必要な設定があります。define( 'DISABLE_WP_CRON', true );はページへのアクセスで予約タスクが起動しないようにします。有効にする前にwp-cron.php用のサーバーcronジョブを設定してください。設定しないと予約投稿などの時間指定の処理が実行されません。
wp-config.phpを安全に編集する方法
- 先にコピーをダウンロードします。 自分のパソコンに保存してください。
wp-config.php.bakのような名前でサーバーに残したコピーは、サーバーがPHPとして扱わなくなるため、ブラウザで読めてしまう可能性があります。 - プレーンテキストエディタで開きます。 WordPressの編集ガイドはNotepad++、Sublime Text、Visual Studio Codeを適切なものとして挙げています。Google DocsとMicrosoft Wordは避けるよう警告しています。ワープロソフトは引用符を変更し、ファイルを壊すコードを追加することがあるためです。
- 「stop editing」の行を探し、 そのすぐ上に新しい行を入れます。その設定がすでに上で定義されている場合は、その行を変更します。
- 保存してアップロードし、サイトを開きます。 ブラウザのプライベートウィンドウで、wp-adminのページも1つ開いてください。
- 何か壊れたらコピーを戻します。 wp-adminが読み込めないときでも、これで編集を元に戻せます。
ファイルをウェブルートの上に移動する
ハードニングガイドによると、wp-config.phpはWordPressのインストール先の1つ上のフォルダに置けます。ローダーのコードが追加設定なしで対応します。ファイルを移動したら、サイトが読み込めることを確認してください。この移動には2つの制限があります。
- 親フォルダに別のWordPressがあってはいけません。 ローダーは独自の
wp-settings.phpを持つ親フォルダを無視します。 - 1つ上が非公開になるのは、WordPressがウェブルートにある場合だけです。
/blog/のようなサブフォルダにWordPressがある場合、1つ上はたいてい公開されたままです。
同じガイドは、この移動のセキュリティ上の利点はごくわずかだという意見があること、不注意に行うと深刻な脆弱性を生む可能性があることも述べています。そのため、任意の対策と考えてください。Apacheでは、同ガイドが.htaccessファイルの先頭に置く次のブロックも示しています。ファイルへの直接リクエストを拒否します。
<Files "wp-config.php">
Require all denied
</Files>
.htaccessのセキュリティガイドで、このルールを他のルールとあわせて説明しています。
wp-config.phpのファイルパーミッション
WordPressのドキュメントでは、状況によって少し違う数字が示されています。
- ハードニングガイドには、ファイルを読み取れるのは自分とウェブサーバーだけにすべきとあり、これは一般に400または440を意味するとされています。
- ファイルパーミッションのガイドは、suexecを使う共有サーバーでは、同じサーバーの他のユーザーに読まれないよう440または400としています。保護された例として600も示しています。
- 通常のWordPressファイルについて、同ガイドは644または640としています。
どの数字で動くかは、ウェブサーバーがどのシステムユーザーで動いているかによります。ウェブサーバーはファイルを読み取れる必要があるので、変更後にサイトが読み込めなくなったら前の値に戻し、ホスティング会社にどの値が環境に合うか尋ねてください。
よくある間違い
wp-settings.phpの行より後に設定を貼り付ける。 その行がWordPressを読み込み、デフォルト値を設定します。PHPの定数はスクリプトの実行中に変更できないので、その行は効果がありません。- 同じ設定を2回定義する。 最初の行が値を決め、2行目はそれを変更できません。PHPマニュアルによると、定数の再宣言はPHP 8.5から非推奨なので、メッセージが出ることもあります。追加する前にファイル内で名前を検索してください。
- trueやfalseを引用符で囲む。
'false'は空でない文字列で、PHPはこれをtrueとして扱います。falseは引用符なしで書いてください。'256M'のようなサイズには引用符が必要です。 - ワープロソフトやウェブページから来たカーリークォート。 PHPにはまっすぐな引用符が必要で、カーリークォートはサイトが読み込めなくなるエラーを起こします。
- 稼働中のサイトでデバッグエラーを表示する。
WP_DEBUG_DISPLAYのデフォルトはtrueなので、WP_DEBUGだけを有効にすると、エラーがページ上で訪問者に見えてしまいます。デバッグログの場所のガイドで、ファイルに送る方法を説明しています。 WP_ALLOW_REPAIRを有効のままにする。 ドキュメントには、必要なときだけ有効にし、問題が解決したら無効にするようにとあります。
よくある質問
WordPressのwp-config.phpとは何ですか?
WordPressが起動時に読み込む設定ファイルです。データベースのログイン情報、セキュリティキー、テーブル接頭辞が入っていて、WP_DEBUGやWP_MEMORY_LIMITなどの設定もここに追加します。
wp-config.phpファイルはどこにありますか?
通常はWordPressのインストール先のルートフォルダ、つまりwp-admin、wp-includes、wp-contentがあるフォルダです。WordPressはインストール先の1つ上のフォルダにあっても読み込みます。ただし、そのフォルダにwp-settings.phpがない場合に限ります。
wp-config.phpのどこにコードを追加しますか? That’s all, stop editing! Happy publishing.(「これで終わりです。編集はここまで。楽しい公開を」)という行の上です。古いファイルではHappy bloggingとなっています。この行より下の最後の行がWordPressを読み込むため、その行より後に置いた設定では遅すぎます。
wp-config.phpを編集しても安全ですか? バックアップを取り、プレーンテキストエディタを使えば安全です。タイプミス1つでwp-adminを含むサイト全体が読み込めなくなることがあるので、先にコピーをダウンロードしてください。編集後にサイトが壊れたら、そのコピーを戻します。
wp-config.phpを削除するとどうなりますか? WordPressはデータベースのログイン情報を見つけられなくなり、設定ファイルの作成を求めるセットアップ処理を始めます。コンテンツはデータベースに残っているので、バックアップを戻すか同じ情報でファイルを作り直せばサイトは再び接続されます。
wp-config.phpのパーミッションはいくつにすべきですか? WordPressのハードニングガイドには、読み取れるのは自分とウェブサーバーだけにすべきとあり、これは一般に400または440を意味します。ファイルパーミッションのガイドには600も示されています。ウェブサーバーはファイルを読み取る必要があるので、サイトが読み込めなくなったらホスティング会社に確認してください。
出典
- WordPress Advanced Administration: wp-config.php, Hardening WordPress, File permissions, Editing files
- WordPressのソースコード: wp-config-sample.php, wp-load.php, default-constants.php, setup-config.php, cron.php
- PHPマニュアル: Constants, Booleans
必要な設定を手入力せずに、新しいセキュリティキーも含めて作成するなら、無料のwp-config.phpジェネレーターをご利用ください。
FAQ
よくある質問
WordPressのwp-config.phpとは何ですか?
WordPressが起動時に読み込む設定ファイルです。データベースのログイン情報、セキュリティキー、テーブル接頭辞が入っていて、WP_DEBUGやWP_MEMORY_LIMITなどの設定もここに追加します。
wp-config.phpファイルはどこにありますか?
通常はWordPressのインストール先のルートフォルダ、つまりwp-admin、wp-includes、wp-contentがあるフォルダです。WordPressはインストール先の1つ上のフォルダにあっても読み込みます。ただし、そのフォルダにwp-settings.phpがない場合に限ります。
wp-config.phpのどこにコードを追加しますか?
That's all, stop editing! Happy publishing.(「これで終わりです。編集はここまで。楽しい公開を」)という行の上です。古いファイルではHappy bloggingとなっています。この行より下の最後の行がWordPressを読み込むため、その行より後に置いた設定では遅すぎます。
wp-config.phpを編集しても安全ですか?
バックアップを取り、プレーンテキストエディタを使えば安全です。タイプミス1つでwp-adminを含むサイト全体が読み込めなくなることがあるので、先にコピーをダウンロードしてください。編集後にサイトが壊れたら、そのコピーを戻します。
wp-config.phpを削除するとどうなりますか?
WordPressはデータベースのログイン情報を見つけられなくなり、設定ファイルの作成を求めるセットアップ処理を始めます。コンテンツはデータベースに残っているので、バックアップを戻すか同じ情報でファイルを作り直せばサイトは再び接続されます。
wp-config.phpのパーミッションはいくつにすべきですか?
WordPressのハードニングガイドには、読み取れるのは自分とウェブサーバーだけにすべきとあり、これは一般に400または440を意味します。ファイルパーミッションのガイドには600も示されています。ウェブサーバーはファイルを読み取る必要があるので、サイトが読み込めなくなったらホスティング会社に確認してください。