web-dev-qa-db-ja.com

Yii2:デバッグおよび実稼働環境の準備方法

私はYii=を定義し、定数YII_DEBUGおよびYII_ENV。もちろん、ローカルマシンでは「true」と「dev」に設定されています。これは、基本的なアプリテンプレートが index.php = file。このファイルは、プロダクションモード、つまりプロダクションマシンでこれらの行を削除する必要があることも通知します。その後、これらの定数はデフォルトで「false」および「prod」に設定されます。情報は Defining Constants および Environment Constants で見つけることができます。

私の質問:index.phpがVCSに含まれている場合、これらの定数を最適に処理するにはどうすればよいですか?ある環境では存在し、別の環境では存在しません。もちろん、テストマシンでもかまいません。どのオプションがありますか?これも展開方法の問題だと思います。現在、私はGitを介してプロダクションマシンにプッシュしています。プリミティブデプロイメントIMOとは...

どうやってやるの?何を指示してるんですか?

編集:実際には、paramsファイルの処理は同じ問題です。

18
robsch

私のソリューションは次のとおりです。

if ($_SERVER['SERVER_NAME'] == 'localhost' || $_SERVER['SERVER_NAME'] == '127.0.0.1') {
  defined('YII_DEBUG') or define('YII_DEBUG', true);
  defined('YII_ENV') or define('YII_ENV', 'dev');
}

Herokuの場合も、 HerokuでYii2 Advancedをセットアップ

7
Chloe

Yii2(または少なくとも高度なアプリケーションテンプレート)のシステムは「environments」です。このフォルダーには、環境ごとに変化するファイルを保存できます。

これらのファイルは通常、bootstrap files(index.php)および「ローカル」構成ファイル(メイン構成をオーバーライドするもの)。

アプリテンプレートには、切り替え可能な「init」コマンドもあります。

基本的にenvironments- folder全体をVCSに追加しますが、それらのファイルが最終的に配置される場所を無視します(既に述べたAnkitのように)。この方法により、VCSのすべての異なる環境依存設定を隣り合わせて保持できます。

詳細については here を、このフォルダーの表示例については here を参照してください。

5
Blizz

別の簡単なソリューション:

ファイルindex.php(VCSリポジトリに入ります):

<?php

@include 'my-env.php';

require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/../config/web.php');

(new yii\web\Application($config))->run();

My-env.phpファイル:

<?php

defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

my-env.phpはVCSに追加されません。存在する場合と存在しない場合があります。そうでない場合、アプリは実稼働モードで自動的に実行されます。 my-env.phpは、おそらくconfigフォルダーにも配置できます。

これは、Ankitのアプローチと比較して小さな改善であるため、index.phpをVCSに追加できます。したがって、VCSリポジトリにはall必要なファイルが含まれており、手動で修正することなく展開できます。

5
robsch

仮想ホストを設定する設定ファイルにアクセスできますか?その場合は、addsetEnv YII_DEBUG "true" の間に </Directory>および</VirtualHost>

5

Yii2は作曲家と連携します。質問の1つは、composer.lock

Yii2の制作サイトにcomposer.lockから.gitignoreので、composer=生産の問題に​​応じた更新を決定し、composer.lockgit pull本番サイトの更新用。

.gitignoreの最後の行は次のとおりです。

 # exclude composer.lock from versioning 
 composer.lock
0
WeSee