サポート » 使い方全般 » wp-config.phpを一つ上の階層に移動する際の疑問

  • 解決済 しろ

    (@kitaguni_ht)


    セキュリティ対策として、Codexのwp-config.php を安全にするを読んで、
    wp-config.php を1つ上の階層(非公開ディレクトリ)へ移動をしたいと思ったのですが、少しわかりにくいのと疑問がありまして質問させていただきました。

    現在マルチサイトではなく、3つのWordPressをインストールしてあります。

    www ┬ WP1(メイン・トップページのURLを変更済み)
      ├ WP2(ブログ1)
      └ WP3(ブログ2)

    各WPのwp-config.phpを一つ上の階層に移動するとなると、ファイル名が被ってしまうと思うのですが、複数WordPressをインストールしている場合この方法はできないということでしょうか?
    であれば、トップページのURLを変更済なので、wwwにある.htaccessに以下のコードを文末に記述してアクセスを拒否する方法を取ればよいということでしょうか?

    <files wp-config.php>
    order allow,deny
    deny from all
    </files>

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック投稿者 しろ

    (@kitaguni_ht)

    タイトルが長すぎたせいか反映されませんでしたので、「wp-config.phpを一つ上の階層に移動する際の疑問」などタイトルの変更を管理人様お願いいたします。

    モデレーター Takayuki Miyoshi

    (@takayukister)

    タイトルを変更しました。

    なお、トピックタイトルの変更は管理者でなくてもトピック作成者の手で行うことが可能です。最初のコメントの「編集」をクリックしてみてください。

    トピック投稿者 しろ

    (@kitaguni_ht)

    Takayuki Miyoshiさん>
    え!投稿後も編集できるんですか?
    でも、「編集」が見当たらない気がするのですが…(・_・;)
    もちろんログインしています。

    トピック投稿者 しろ

    (@kitaguni_ht)

    Takayuki Miyoshiさん>
    すみません、最新のコメントにのみ「編集」を確認しました。
    投稿直後だと編集可能ということですね。
    ありがとうございました。

    モデレーター Takayuki Miyoshi

    (@takayukister)

    はい。投稿から60分で編集できなくなりますのでお早めに。管理者はその後も編集できます。

    各WPのwp-config.phpを一つ上の階層に移動するとなると、ファイル名が被ってしまうと思うのですが、複数WordPressをインストールしている場合この方法はできないということでしょうか?

    はい、できません。そもそも、このインストール形態では、

    wp-config.php を1つ上の階層(非公開ディレクトリ)へ移動

    ができません。

    config.php を非公開ディレクトリに置く、というのは、たとえば、次のようなことをいいます。Codex の想定に従うと、

    +--www--+--wp-admin
            |
            +--wp-content
            |
            +--wp-includes
            |
            +-index.php
            |
            +-wp-config.php

    この状態で、

    +--www--+--wp-admin
    |       |
    |       +--wp-content
    |       |
    |       +--wp-includes
    |       |
    |       +-index.php
    |
    +--wp-config.php

    のようにするわけです。WordPress は www 直下にインストールしてあって、wp-config.php は www ディレクトリと同じ階層にあるということですね。ここにあるファイルは、php なら読めるけれども、ウェブサーバ(たとえば、Apache)はアクセスできません。

    これがより安全であるという理由は、「ウェブサービスを通して、wp-config.php が閲覧されたり、ダウンロードされたりする心配がない」ということです。当然、いろいろな議論があって、Codex にもリンクがありますから、ご覧になるといいと思います。

    一方、kitaguni_ht さんのインストール状態では下のようになっています(WP3は省略しました)。

    www--+--WP1--+--index.php
         |       |
         |       +--wp-config.php
         |
         +--WP2--+--index.php
         |       |
         |       +--wp-config.php
         |
         +--.htaccess

    これを、

    www--+--WP1--+--index.php
         |
         +--wp-config.php
         |
         +--WP2--+--index.php
         |       |
         |       +--wp-config.php
         |
         +--.htaccess

    のようにすることができます。WP1 または WP2 ディレクトリの1つ上なので、Codex の例ように www と同じ階層には移せません。このとき、ウェブサーバがアクセスできる、できないということだけを考えると、どちらもアクセスできる場所なので、安全性が増すということはありません。また、kitaguni_ht さんがおっしゃるように、ファイル名が同じなので、一つしか置けません。理由は簡単で、WordPress でそのようにコーディングされているからです。

    WordPress は index.php にアクセスがあると、次の順序でファイルを読みます。

    index.php -> wp-blog-header.php -> wp-load.php -> wp-config.php

    wp-load.php の冒頭近くにこんな部分があります。

    if ( file_exists( ABSPATH . 'wp-cofing.php') ) {
        require_once( ABSPATH . 'wp-config.php' );
    } elseif ( file_exists( dirname(ABSPATH) . '/wp-config.php' ) && !file_exists( driname(ABSPATH) . 'wp-settings.php' ) ) {
        require_once( dirname(ABSPATH) . '/wp-config.php' );
    } else {
        インストールプロセスに入る
    }

    コードにはコメントつけられていて、下のようなことが書いてあります。

    1. もし、WordPress がインストールされたディレクトリに wp-config.php があれば、それを読み込む。
    2. それがなくて、一つ上のディレクトリに wp-config.php があり、wp-settings.php がなければ、その wp-config.php を読み込む。
    3. どちらもなければ、インストールを開始する。

    この部分を変えればどこからでもファイルを読み込めますが、コアファイルをいじると後のメンテナンスが面倒なので、お勧めしません。wp-config.phpはアップグレードの時でも書き換えられないことが保証されているので、これを2段階にして、別の場所からパスワードなどを読み込むという手段もありますが、気分の問題のような気がします。

    ということで、Codexのお勧めは、

    1. wp-config.php のパーミッションを 0400 にする(ファイルの所有者以外はアクセス禁止)。
    2. .htaccess で全てのアクセスを禁止する。(kigaguni_ht さんの書かれた通りです)

    となります。1はウェブサーバではなくて、サーバにある全てのプログラム、root を除く全てのユーザが禁止対象になります。共用サーバで、たとえ隣からシンボリックリンクを張られても、読まれる可能性は少ないと言えます。2は、勿論、Apache だけにしか作用しません。それぞれ別のことをやっているので、できればどちらも設定するのがよいと思います。

    トピック投稿者 しろ

    (@kitaguni_ht)

    Takayuki Miyoshi>
    60分だけなのですね!今後活用したいと思います。
    ありがとうございます(^^)

    kjmtshさん>
    やはり出来ないのですね。
    でも、ようやくすっきりしました!
    Codexの説明だけではなかなか理解できなくて困っていましたので。
    1と2の対策を講じてみて、Codexのリンクも読んでみます。
    図つきの丁寧な説明でとってもわかりやすかったです。ありがとうございました(^^)

    トピック投稿者 しろ

    (@kitaguni_ht)

    解決済みとさせていただきます。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「wp-config.phpを一つ上の階層に移動する際の疑問」には新たに返信することはできません。