wp-config.phpの基本設定:ファイルの場所からメモリ・リビジョンまで

公正取引委員会の広告文 Ver 3.1
公正取引委員会の広告文 Ver 3.2(モバイル専用)

wp-config.phpファイルは、WordPressサイトの 最も重要な設定ファイルです。このファイルには、WordPressがデータベースに接続して動作するために必要な 核心情報が含まれているため、サイトの心臓部のような役割を果たします。

Ⅰ. wp-config.phpの役割

このファイルには、次のような機密性の高い設定が含まれています。

  • データベース接続情報
  • ↳ MySQLまたはMariaDBのデータベース名、ユーザー名、パスワード、ホスト情報など、WordPressのコンテンツを保存するデータベースに接続するための必須情報が入っています。
  • セキュリティキーとソルト
  • ↳ ユーザーのログインセッションとCookieを暗号化してセキュリティを高めるための、固有でランダムな文字列です。このキーがないとセッションを安全に保てません。
  • その他の主要設定
  • ↳ テーブル接頭辞、デバッグモードの有効化/無効化、ファイル編集の無効化など、WordPressの動作を制御する重要な定数が定義されています。
WordPressのwp-config.phpファイル

こうした特性から、wp-config.phpファイルは外部の攻撃者にとって 最優先の攻撃対象となります。ファイルのアクセス権限が誤って設定されたり内容が露出したりすると、データベース全体が流出したり、サイトの管理権限を奪われたりする深刻な セキュリティ脆弱性につながります。そのため、WordPressのセキュリティ強化の第一歩は、このファイルの安全を確保することです。

1️⃣ wp-config.phpファイルの場所

wp-config.phpはWordPressをインストールした最上位フォルダにあり、[wp-admin]・[wp-content]・[wp-includes]フォルダと同じ場所に置かれています。cPanelのホスティングでは[public_html]フォルダがその場所で、このサイトではLightsail VPSの[/home/uknew/www/wp-config.php]に置いています。

最上位フォルダにファイルが見当たらない場合は、一つ上のフォルダを確認します。WordPressはwp-config.phpをまずインストールフォルダで探し、なければすぐ上のフォルダから読み込みます。

2️⃣ wp-config.phpの開き方

ホスティング管理パネルの[ファイルマネージャー]で最上位フォルダに移動し、wp-config.phpを右クリックして[Edit]を選択します。別のプログラムを使わず、ブラウザ上で直接編集できる方法です。

FTPソフト(FileZilla)で接続すると、ファイルを自分のパソコンにダウンロードし、エディタで編集してから再度アップロードします。アップロード前に元のファイルを別に保存しておけば、エラーが出たときにすぐ元に戻せます。

VPSのように SSHで接続するサーバーでは、[vi]エディタの名前の後ろにファイルパスを付けて実行します。[nano]でも同じ方法で開けます。

vi /home/uknew/www/wp-config.php

3️⃣ wp-config-sample.phpと基本構造

ダウンロードしたばかりのWordPressの圧縮ファイルにはwp-config.phpがなく、同じ場所に[wp-config-sample.php]だけが入っています。インストール画面でデータベース情報を入力すると、WordPressがこのファイルをもとにwp-config.phpを作成します。自分でコピーして名前を変えても同じ結果になります。

define( 'DB_NAME', 'database_name_here' );
define( 'DB_USER', 'username_here' );
define( 'DB_PASSWORD', 'password_here' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'DB_COLLATE', '' );

define( 'AUTH_KEY',         'put your unique phrase here' );
define( 'SECURE_AUTH_KEY',  'put your unique phrase here' );
define( 'LOGGED_IN_KEY',    'put your unique phrase here' );
define( 'NONCE_KEY',        'put your unique phrase here' );
define( 'AUTH_SALT',        'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT',   'put your unique phrase here' );
define( 'NONCE_SALT',       'put your unique phrase here' );

$table_prefix = 'wp_';

define( 'WP_DEBUG', false );

[DB_NAME]・[DB_USER]・[DB_PASSWORD]・[DB_HOST]の4行には、ホスティングから受け取ったデータベース情報を入れます。値が一つでも間違っていると、サイトの代わりに[Error establishing a database connection]エラーが表示されます。

[AUTH_KEY]から[NONCE_SALT]までの8行はログインCookieを暗号化する値で、[https://api.wordpress.org/secret-key/1.1/salt/]で新しく取得してまとめて置き換えます。値を変えると、ログイン中のすべてのユーザーがログアウトされます。

[$table_prefix]はデータベースのテーブル名の前に付く接頭辞で、初期値は[wp_]です。1つのデータベースに複数のWordPressをインストールするとき、互いを区別する役割を果たします。[WP_DEBUG]を[true]にすると PHPエラーが画面に表示されるため、運用中のサイトでは[false]のままにします。

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

このコメント(/* That’s all, stop editing! Happy publishing. */)は、技術的にはPHPコードとして特別な機能を持つものではありません。単なる コメントにすぎません。

しかし、WordPress開発チームがユーザーに「このコメントの下にはWordPressの動作に必要な核心コードがあるので触らないように」という意味で残した ‘目印‘ の役割を果たします。

1️⃣ ポイント:このコメントの 上に コードを追加すべき理由

WordPressのwp-config.phpファイルは、次のような構造で終わります。

// (中略: データベース 情報、 セキュリティ キー、 テーブル 接頭辞 など)

/**
 * For developers: WordPress debugging mode.
 *
 * Change this to true to enable the display of notices during development.
 * It is strongly recommended that plugin and theme developers use WP_DEBUG
 * in their development environments.
 */
define( 'WP_DEBUG', false );
### 
/* That's all, stop editing! Happy publishing. */

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

/** Sets up WordPress vars and included files. */
require_once( ABSPATH . 'wp-settings.php' );
  1. 設定定数(define)は上に: WordPressの設定に関係するほとんどの定数(define)は /* That’s all, stop editing! Happy publishing. */ コメントの直上で 定義されてはじめて、WordPressが設定を初期化する過程で正しく読み込まれます。
  2. WordPressの読み込み開始は下に: このコメントの下には [ABSPATH] の定義と[require_once( ABSPATH . ‘wp-settings.php’ );]というコードがあります。この[wp-settings.php]ファイルを読み込んだ瞬間から、WordPressの主要機能が実際に動き始めます。

したがって、ユーザーが 追加の設定 (例:ファイル編集の無効化[define(‘DISALLOW_FILE_EDIT’, true);]やメモリ上限の設定[define(‘WP_MEMORY_LIMIT’, ‘256M’);]など)を行うには、WordPressの核心となる読み込みファイルが呼び出される 前、つまり コメントの直上に書くことで、エラーなく適用されます。

wp-config-sample.phpには、[stop editing]コメントの直上に[Add any custom values between this line and the “stop editing” line.]というコメントがもう1行あり、自分で追加する設定はこの2つのコメントの間に入れます。

Ⅲ. WordPressインストール後に適用するwp-config.php基本設定

1️⃣ Heartbeatの設定

WordPressの「Heartbeat」は、サーバーとサイトが接続し続けているかを確認する信号です。Heartbeat APIは 
/wp-admin/admin-ajax.phpを使ってブラウザからAJAX呼び出しを実行します。WordPressのダッシュボードでは、このファイルによって15秒ごとにPOSTリクエストが送信されます。

投稿編集画面である [post.php]·[post-new.php]でのみ動作するように設定できます。

Heartbeatにはwp-config.phpで使う定数がないため、このファイルでは制御できません。下のコードをwp-config.phpに入れると、WordPressが[add_action]関数を読み込む前に実行され、[Call to undefined function add_action()]エラーでサイトが止まります。

WP Rocketを使っている場合は、[Heartbeat]タブで管理画面・投稿エディター・フロントエンドごとに[Do not limit]・[Reduce activity]・[Disable]のいずれかを選びます。

WP RocketのHeartbeat設定画面

Perfmattersでは、[Disable Heartbeat]でHeartbeatを許可する画面を、[Heartbeat Frequency]でリクエスト間隔を決めます。

PerfmattersのHeartbeat設定

どちらのプラグインもない場合、Heartbeatのためだけにプラグインを追加でインストールしないでください。プラグインは 削除した後も設定値がデータベースに残るため、下のコードをテーマの[functions.php]に入れます。

/** Disable Heartbeat everywhere except post editor */
add_action('init', function() {
    global $pagenow;
    if ($pagenow != 'post.php' && $pagenow != 'post-new.php') {
        wp_deregister_script('heartbeat');
    }
}, 1);

2️⃣ WordPressのメモリ設定

メモリ設定は、WordPressがPHPで使えるメモリの上限を指定し、テーマやプラグインの実行中にメモリ不足エラー(Fatal error: Allowed memory size exhausted)が起きるのを防ぐためのものです。つまり、安定したサイト運用とリソース超過防止のための 基本的な安全装置です。

WordPressのチュートリアルや公式ドキュメントでは、[define(‘WP_MEMORY_LIMIT’, ‘256M’);] だけ が載っている場合がほとんどです。

/** Memory Limit for WordPress */
define('WP_MEMORY_LIMIT', '256M');      // フロントエンド
define('WP_MAX_MEMORY_LIMIT', '512M');  // 管理画面/バックエンド

‘WP_MAX_MEMORY_LIMIT’は フロントエンドよりバックエンドにより多くのメモリを許可する仕組みです。

WP_MEMORY_LIMITは「サイト訪問者用のメモリ上限」で、
WP_MAX_MEMORY_LIMITは「管理画面・内部処理用の拡張上限」です。
2つを一緒に設定してはじめて WordPressのメモリを完全に制御できます。

wp-config.phpの値がサーバーのphp.iniまたはPHP-FPM poolの設定より大きい場合は、サーバーの設定が優先されます。

3️⃣ リビジョンの制限

WordPressのリビジョンは、投稿を編集する前のデータが積み重なり続けるため、サイトが遅くなります。特にキャッシュを入れていないサイトや、キャッシュがあっても管理画面のダッシュボードで作業している間、特に投稿やページでコンテンツを作成しているときは、訪問者向けのページまで遅くなることがあります。

たとえばサーバーのCPU全体を50%ほど使っている場合、どのキャッシュプラグインを使っても訪問者向けページの速度が落ちることがあります。

そのため、リビジョンを無効にするか、保存数を制限します。

リビジョン数を決めるために別のプラグインを入れる必要はありません。下の定数を1行wp-config.phpに入れれば同じ結果になり、後で消すべきプラグインの設定もデータベースに残りません。

◽️️リビジョンを完全にオフにする

/** Disable Post Revisions completely */
define('WP_POST_REVISIONS', false);

◽️️リビジョンを一定数に制限(例:3件)

/** Limit Post Revisions to 3 per post */
define('WP_POST_REVISIONS', 3);

◽️️自動保存の間隔を調整

WordPressの投稿の自動保存間隔は初期値で1分です。たとえば初期値の60秒から5分(300秒)に延ばせます。

/** Increase autosave interval to 5 minutes */
define('AUTOSAVE_INTERVAL', 300);

WP RocketやPerfmattersを使っている場合は、設定画面からも扱えます。 WP Rocketは[Database]タブの[Revisions]で溜まったリビジョンを削除しますが、保存数を制限する設定はありません。

WP Rocketのデータベース・リビジョン整理画面

Perfmattersでは、[Limit Post Revisions]で投稿ごとに残すリビジョン数を、[Autosave Interval]で自動保存の間隔を決めます。

Perfmattersのリビジョン制限設定

🔢 FAQ & おすすめコンテンツ

保存したばかりの行で引用符やセミコロンが抜けていると、PHPがwp-config.phpを最後まで読めず、サイトが開きません。編集前に保存しておいた元のファイルに戻してから、変更した行だけを確認し直します。

wp-config.phpのセキュリティ記事では、所有者だけが読み書きできる[600]を推奨しています。PHPがファイルの所有者と別のアカウントで動くサーバーでは600だとファイルを読めないため、変更後すぐにサイトが開くか確認します。

WP Rocketは有効化するとファイルの先頭に[define( ‘WP_CACHE’, true ); // Added by WP Rocket]を1行追加し、このサイトのwp-config.phpにも2行目にこの行があります。この行があってはじめて、WordPressがキャッシュファイル[advanced-cache.php]を読み込みます。

同じ定数がファイルの上のほうですでに定義されていると、PHPは先に定義された値をそのまま使い、下の行には[Constant WP_MEMORY_LIMIT already defined]という警告を残すだけです。ホスティングやプラグインが追加した行がないか、定数名でファイル全体を検索します。

ℹ️ 提携について
当サイトのコンテンツにはアフィリエイトリンクが含まれています。訪問者がこのリンクを通じて商品やサービスを購入すると、当サイトは販売元から手数料を受け取ります。この過程において、購入者が支払う金額(イベント割引適用で金額が下がります↓)は上昇しません。掲載されている価格・割引・在庫情報は作成時点のものであり、実際とは異なる場合がありますので、ご購入前に販売元にて最終確認をお願いいたします。商品の選定および評価は独自の基準に基づいて行われており、手数料の支払いの有無は紹介順や評価内容に影響を与えません。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

人間であることを証明してください: 3   +   3   =