基本的に、これまでで最も大きな質問の1つです。開発/ステージングワークフローでsettings.phpを使用する方法は何ですか?
現在、settings.phpファイルは次のように設定されており、サーバーの$ HOSTディレクティブに基づいて開発を行っています。つまり、開発(共有)サーバーlocal.exampleのdev.example.comで作業できます。ローカルコンピューター(および他の開発者のローカルコードチェックアウト)にはcom、ライブサイトにはwww.example.com(またはexample.com)を使用します。
(このコードはsettings.phpの「データベース設定」セクションにあります):
$host = $_SERVER['HTTP_HOST'];
$base_url = 'http://'.$host;
$cookie_domain = $host;
switch($host) {
case 'example.com': # Production server
$db_url = 'mysqli://prod_sql_user:password@127.0.0.1/prod_db';
$update_free_access = FALSE;
$conf = array (
// Set production config options here...
'example_setting' => 0,
);
break;
case 'dev.example.com': # Development server
$db_url = 'mysqli://dev_sql_user:password@127.0.0.1/dev_db';
$update_free_access = FALSE;
$conf = array (
// Set production config options here...
'example_setting' => 0,
);
break;
case 'local.example.com': # Local server
$db_url = 'mysqli://local_sql_user:password@127.0.0.1/local_db';
$update_free_access = FALSE;
$conf = array (
// Set production config options here...
'example_setting' => 0,
// Turn off most core caching.
'cache_inc' => 'includes/cache.inc',
'cache' => CACHE_DISABLED,
);
break;
}
?>
これはほとんどの目的でかなりうまく機能しますが、共有settings.phpファイルに多くの無関係なコードが存在することを意味します...より良い方法はありますか?