wp-config.phpはドキュメントルートよりも上の階層に置いたほうがいいという話

WordPressの”wp-config.php”はデフォルトでは”index.php”と同じ階層に設置されていますが、これはやめておいた方が無難でしょう。
なぜなら、直接ファイルにアクセスできてしまいconfigの内容を読み取られてしまう可能性があるからです。

phpが動いているから大丈夫

確かに実際にはphpが動作しているため、URLで「http://○○○.○○/wp-config.php」と直接ファイルを指定しても何も表示されることははいでしょう。

でも、なんかドキュメントルート配下にあるのはなんか不安があります。

しかし、WordPressでは既に考慮されているっぽいぞ

“wp-config.php”を読み込んでいる”wp-load.php”には下記のような記述がありました。

<-- 省略 -->

if ( file_exists( ABSPATH . 'wp-config.php') ) {

	/** The config file resides in ABSPATH */
	require_once( ABSPATH . 'wp-config.php' );

} elseif ( file_exists( dirname(ABSPATH) . '/wp-config.php' ) && ! file_exists( dirname(ABSPATH) . '/wp-settings.php' ) ) {

	/** The config file resides one level above ABSPATH but is not part of another install */
	require_once( dirname(ABSPATH) . '/wp-config.php' );

} else {

	// A config file doesn't exist

<-- 以下省略 -->

WordPress 3.5.1で確認

まず”wp-load.php”と同じ階層で”wp-config.php”を探し、なければ一つ上の階層に”wp-config.php”が無いか探しています。

なんかもう既に考慮されているっぽい?過去のしがらみ?

よくわかりませんが、ドキュメントルート直下に”wp-config.php”がある場合は以下のようにして、ドキュメントルート以外の場所に出してあげることにします。

filezilla

ドキュメントルートが”/public_html”に設定されている場合。
“/public_html/wp-config.php”を一回ダウンロードして、サーバー上から消してしまいましょう。

filezilla2

その後ひとつ上の階層に移動して、ダウンロードした”wp-config.php”をアップロード。
ソースコードを変更することもなく動作することが確認できました。

これって意味あるの?

まあ、無駄な心配をすることは無くなりました。手間もそんなにかからないですし、やっておいて損は無いかと思います。

WordPressをドキュメントルートからさらに深い階層に設置している場合は”wp-load.php”の「dirname(ABSPATH)」の部分を「dirname(dirname(ABSPATH))」等にして対応しましょう。

コメントを残す