環境設定

Craft プロジェクトが複数の環境(例:Development、Staging、および、Production)にまたがる場合、それぞれの環境ごとに異なる設定が必要です。

例えば、それぞれの環境ではおそらく固有のデータベース接続設定が必要になり、Dev Mode は Production ではなくローカルの開発環境で有効にするべきです。

Craft ではそれを達成するための2つの方法があります。環境変数マルチ環境設定です。

TIP

これらは互いに排他的ではありません。ほとんどの Craft プロジェクトでは、異なる方法で両方のアプローチを使用します。

環境変数

環境変数は PHP の getenv() ファンクションで読み込むことのできる、Craft が動作しているサーバー上でセットされた値です。

いくつかの方法(例えば、いくつかのホストは環境変数を定義するための UI を提供するなど)で設定できますが、新しい Craft 3 プロジェクトに付属する .env ファイルに設定することを推奨します。.env ファイルは他のプロジェクトのファイルのように Git にコミットしないため、特殊です。そのため、機密性の高い情報やそれぞれの環境で変化するような情報を記入しておくのに便利な場所です。

新しい環境変数をセットするには .env ファイルを開き、次のように追加します。

# -- .env --
SITE_URL="http://my-project.test"

TIP

.env 構文でサポートされる詳細については、PHP Dotenv documentation を参照してください。

.env に新しい変数を追加するときは、おそらく値なしで .env.example にも追加しておくとよいでしょう。.env.example は、新しい環境の .env ファイルのベースにするべき出発点になります。

# -- .env.example --
SITE_URL=""

環境変数を定義すると、実際のコンフィグ設定データベース接続設定で次のように取得できます。

// -- config/general.php --
'siteUrl' => getenv('SITE_URL'),

いくつかの環境で環境変数が定義されていない可能性がある場合、三項演算子?:)を使用してフォールバック値を定義します。

// -- config/general.php --
'siteUrl' => getenv('SITE_URL') ?: '/',

マルチ環境設定

すべての Craft の設定ファイル(config/ フォルダ内の .php ファイル)は、それぞれ環境ごとに別々の設定を定義できます。

単一の環境設定は、次のようにシンプルです。

// -- config/general.php --
return [
    'omitScriptNameInUrls' => true,
    'siteUrl' => 'https://examle.com',
];

例えば、開発環境で異なる siteUrl 値を設定したいとします。そのために、はじめにすべてのコンフィグ設定を '*' キーの配列に移動し、マルチ環境設定にします。




 


 


// -- config/general.php --
return [
    // Global settings
    '*' => [
        'omitScriptNameInUrls' => true,
        'siteUrl' => 'https://examle.com',
    ],
];

これで、Craft はマルチ環境設定としてこれを扱うことを知ります。あとは、開発環境向けに siteUrl 設定を上書きするだけです。










 
 
 


// -- config/general.php --
return [
    // Global settings
    '*' => [
        'omitScriptNameInUrls' => true,
        'siteUrl' => 'https://my-project.com',
    ],

    // Dev environment settings
    'dev' => [
        'siteUrl' => 'http://my-project.test',
    ],
];

実際の環境名は、あなた次第です。Craft は web/index.php ファイルに定義されているCRAFT_ENVIRONMENT PHP定数と同じ名前のキーを探します。

デフォルトでは、新しい Craft 3 プロジェクトは .env ファイルに定義された ENVIRONMENT 環境変数を使用してCRAFT_ENVIRONMENT 定数を定義します。

// -- web/index.php --
// Load and run Craft
define('CRAFT_ENVIRONMENT', getenv('ENVIRONMENT') ?: 'production');
# -- .env --
# The environment Craft is currently running in ('dev', 'staging', 'production', etc.)
ENVIRONMENT="dev"

TIP

CRAFT_ENVIRONMENT 定数が定義されていない場合、Craft 2 との後方互換性を維持するため、現在のサーバー名(例:my-project.test)に基づいて、Craft が定義します。ですが、あなた自身が明示的に定義することを推奨します。

WARNING

Craft のマルチ環境設定のサポートを有効にするには、空欄であっても '*' 配列が必要です。Craft はその設定がマルチ環境向けかどうかを決定する際に、チェックします。

エイリアス

エイリアス は、それぞれの環境ごとにパスや URL を定義するための方法を提供します。

例えば、アセットボリュームが存在する web/assets/ フォルダにベースパスと URL を保管する ASSET_BASE_PATHASSET_BASE_URL 環境変数を定義することを望むかもしれません。

# -- .env --
# Path to web/assets/ relative to index.php
ASSET_BASE_PATH="./assets"

# URL to web/assets/
ASSET_BASE_URL="/assets"

これらの環境変数を config/general.php ファイルのカスタムエイリアスとして、次のように取得できます。

'aliases' => [
    '@assetBasePath' => getenv('ASSET_BASE_PATH'),
    '@assetBaseUrl' => getenv('ASSET_BASE_URL'),
],

これで、アセットボリュームの設定を新しいエイリアスから参照できます。

ローカルアセットボリュームのベース URL、ボリュームタイプ、および、ファイルシステムのパスの設定