wp-config.phpといえばWordpressのインストール時に作成する(される)ファイルですよね。
インストールディレクトリに最初から存在するものではありませんが、これの基となるwp-config-example.phpなるファイルがあり、これを編集してwp-config.phpとして使うこともできますしインストール時に必要な項目を入力して自動作成することもできました。
※ただしインストールディレクトリのパーミッションによっては自動作成ができない場合も。これはルートディレクトリの所有者とWordpressを動かすユーザが異なる場合に発生。
ここでは作成済みのwp-config.phpの処理を眺めてみることにします。
wp-config.phpのソース
いつもと同じくコメントを削除して必要な部分のみ表示してみます。
<?php define('DB_NAME', 'database_name_here'); define('DB_USER', 'username_here'); define('DB_PASSWORD', 'password_here'); define('DB_HOST', 'localhost'); define('DB_CHARSET', 'utf8'); 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); if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/'); require_once(ABSPATH . 'wp-settings.php');
それでは順番に見ていくことにしますね。
define('DB_NAME', 'database_name_here'); define('DB_USER', 'username_here'); define('DB_PASSWORD', 'password_here'); define('DB_HOST', 'localhost'); define('DB_CHARSET', 'utf8'); define('DB_COLLATE', '');
define関数が使用されているので定数に値をセットしていることがわかります。主にMySQLデータベースに関する項目ばかりですね。
- DB_NAME…使用するデータベース名
- DB_USER…データベースに接続するユーザ名
- DB_PASSWORD…ユーザのパスワード
- DB_HOST…データベースが動作するホスト名
- DB_CHARSET…データベースで使用する文字コード
- DB_COLLATE…データベースの照合順序
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');
こちらは各種認証用のキーを定義しているとのこと。好きな値を入れてもいいしWordPress.org の秘密鍵サービスで生成することもできるそうです。
$table_prefix = 'wp_';
こちらはMySQLのテーブル名に使用する接頭辞。初期値はご覧の通り「wp_」となっていますがそのまま使うのはセキュリティ上好ましくないと言われるので任意の文字列へ変更したほうがよいでしょう。ちなみに、接頭辞を変えることで、複数のWordpressを1つのMySQLデータベース上にインストール可能という話です。
define('WP_DEBUG', false);
こちらはデバッグモードの有効化・無効化を定義するWP_DEBUG。trueにするとブラウザでサイトにアクセスした時にデバッグモードとして動作してくれます。エラーで正常に動作しない時などでお世話になるかとおもいます。自分もプラグインの不具合でサイトが停止した時に使っています。
if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/'); require_once(ABSPATH . 'wp-settings.php');
最後の処理は!defined()関数が使用さておりABSPATHが定義されていなければここでABSPATHルートディレクトリをセットしたあと「wp-settings.php」を呼び出します。
wp-settings.phpを読み込んだあとはwp-config.phpを呼び出した元であるwp-load.php、wp-load.phpを呼び出したwp-blog-header.phpへと戻って続きの処理を行うことになります。
まとめ
wp-config.phpの処理内容をまとめますと
- データベースへの接続設定
- 認証用キーの設定
- デバッグモードの設定
- wp-settings.phpの呼び出し
という流れになっています。次回はwp-settings.phpを見ていくとしましょう。