Yii2: Как подготовиться к отладке и производственной среде?

Я знаю, что Yii определяет и использует константы YII_DEBUG а также YII_ENV. Конечно, они установлены на «true» и «dev» на моей локальной машине. Это потому, что базовый шаблон приложения подготовил его таким образом в index.php файл. Этот файл также говорит мне, что я должен удалить эти строки для производственного режима, то есть на производственном компьютере. Затем эти константы устанавливаются в «false» и «prod» по умолчанию. Это все хорошо, и я это понимаю.
(Более подробную информацию можно найти на Определение констант а также Константы окружающей среды.)

Мой вопрос: Как я могу лучше всего обрабатывать эти константы, когда index.php содержится в VCS? В одной среде они должны существовать, в другой — нет. Конечно, это может быть и тестовая машина. Какие варианты у меня есть? Я думаю, что это также вопрос метода развертывания. В настоящее время я просто отправляю Git на рабочую машину, что является примитивным развертыванием IMO …

Как ты делаешь это? Что ты предлагаешь?

РЕДАКТИРОВАТЬ: На самом деле, обработка файлов params является той же проблемой.

17

Решение

Вот мое решение:

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, Настройка Yii2 Advanced на Heroku

7

Другие решения

Еще одно простое решение:

Файл 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 содержит все необходимые файлы и могут быть развернуты без каких-либо изменений вручную.

5

У вас есть доступ к файлу конфигурации, где вы устанавливаете виртуальные хосты? Если это так, вы можете просто добавитьsetEnv YII_DEBUG "true" между </Directory> а также </VirtualHost>

5

Yii2 (или, по крайней мере, расширенный шаблон приложения) имеет систему «environmentsMsgstr «В этой папке вы можете хранить файлы, которые меняются в зависимости от среды.

Эти файлы обычно являются вашими файлами начальной загрузки (index.php) и «локальные» файлы конфигурации (вещи, которые переопределяют основную конфигурацию).

Шаблон приложения также имеетinit«команда, которая позволяет вам переключаться.

В основном происходит добавление всего environments-папки к вашей VCS, но вы игнорируете места, где эти файлы должны оказаться (как уже говорилось в Ankit). Таким образом, вы можете хранить все различные зависящие от среды конфигурации в вашей VCS рядом друг с другом.

Увидеть Вот для немного больше информации и Вот пример того, как эта папка может выглядеть.

4

совершить index.php один раз, а затем добавить его .gitignore. Так что вам не нужно менять его каждый раз.

Просто добавь /web/index.php в .gitignore

2

Yii2 работает с композитором. Один вопрос, как справиться composer.lock,

На своих производственных площадках Yii2 я положил composer.lock в .gitignore так что я могу выбрать обновления для композитора в зависимости от производственных проблем и сохранить рабочую версию composer.lock нетронутым во время git pull для обновления производственных площадок.

Мои последние строки .gitignore:

 # exclude composer.lock from versioning
composer.lock
0
По вопросам рекламы [email protected]