【チラ裏WP】開発環境と本番環境でconfig.phpを別々に用意するの(‘A`)マンドクセ

WordPress

ローカル開発環境と本番環境で別にSQLを用意するのだけれど、config.phpはDB別に用意していて、サーバーに上げてからリネームして対処していました。別に手間というほどではないんだけど、めんどいので一本化。
ホスト名からドメイン名の本体部分だけで判断してるので、同じサーバー内で複数環境を用意してる人や、hoge.comとhoge.jpなど、本体部分の文字列が同一な人はそれなりに書き換えればよろし。

以下、config.phpに記述

// ホスト名を取得して、ドットでぶった切って配列に
$http_host_array = explode(".", $_SERVER["HTTP_HOST"]);

// 「.com」とかを無視したいので、後ろから二番目の文字列を取り出す
$num = count($http_host_array) - 2;
$DOMAIN = $http_host_array[$num];
// ↑ここ飛ばして、「hoge.com」などドメイン丸ごとで判断した方がベターかもねww

// $DOMAIN == "test-server" とりまテスト鯖をデフォ
$sql = [
    'DB_NAME' => "テストサーバーのDB名",
    'DB_USER' => "テストサーバーのDBユーザー名",
    'DB_PASSWORD' => "テストサーバーのDBパスワード",
    'DB_HOST' => "テストサーバーのDBホスト"
];
if ($DOMAIN == "vagrant") {
    $sql = [
        'DB_NAME' => "ローカルDB名",
        'DB_USER' => "ローカルDBユーザー名",
        'DB_PASSWORD' => "ローカルDBパスワード",
        'DB_HOST' => "localhost"
    ];
} elseif ($DOMAIN == "hoge") {
    $sql = [
        'DB_NAME' => "本番環境DB名",
        'DB_USER' => "本番環境DBユーザー名",
        'DB_PASSWORD' => "本番環境DBパスワード",
        'DB_HOST' => "本番環境DBホスト"
    ];
}

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', $sql["DB_NAME"]);

/** MySQL データベースのユーザー名 */
define('DB_USER', $sql["DB_USER"]);

/** MySQL データベースのパスワード */
define('DB_PASSWORD', $sql["DB_PASSWORD"]);

/** MySQL のホスト名 */
define('DB_HOST', $sql["DB_HOST"]);

/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');

ローカルマシンの開発環境、テストサーバー、本番サーバーが全部違うという大袈裟な例ですがwww

この判別の仕方だと、hoge.comとhoge.jpなどでサーバー分けてる時とか、
test1.hoge.com と test2.hoge.com とかのケースだとちょいと不味い。
私がそういうやり方しないので上記のようにしてますが、一番間違いがないのは、$_SERVER["HTTP_HOST"]の文字列丸ごとで条件分けすることなのである。そりゃそうだwwww

WordPressMySQL,php,Vagrant,VirtualHost,Wordpress

Posted by 大将