Wicked
Новичок
Универсальный файл конфига проекта.
Чего имеем: имеем некий проект и 2 разных хостинга (development и production). При аплоаде с development на production приходится отдельно заботиться о конфигах.
Чего хочется: универсальный файл конфига, который будет работать работать на некотором заранее известном наборе хостингов.
Текущая реализация: По переменным $_SERVER, $_ENV принимаем решение, на каком хостингемы работаем:
И далее конфиг выглядит так:
PS: Таким образом убивается еще один заяц - то что оба конфига на виду и их проще синхронно редактировать.
Есть идеи, как улучшить этот метод? Или может альтернативные предложения?
Чего имеем: имеем некий проект и 2 разных хостинга (development и production). При аплоаде с development на production приходится отдельно заботиться о конфигах.
Чего хочется: универсальный файл конфига, который будет работать работать на некотором заранее известном наборе хостингов.
Текущая реализация: По переменным $_SERVER, $_ENV принимаем решение, на каком хостингемы работаем:
PHP:
function current_server() {
$servers["dev"] = 0; //normal priority
$servers["dev"] += (@$_SERVER["SERVER_NAME"] == "192.168.1.178");
$servers["dev"] += (@$_ENV["CONSOLE"] == "/dev/console");
$servers["dev"] += (@$_SERVER["SERVER_SOFTWARE"] == "Apache/2.0.52 (Fedora)");
$servers["prod"] = 1; //high priority for better stability of the product server
$servers["prod"] += (@$_SERVER["SERVER_NAME"] == "192.168.1.96");
$servers["prod"] += (@$_SERVER["SERVER_SOFTWARE"] == "Microsoft-IIS/6.0");
arsort($servers);
reset($servers);
return key($servers);
}
PHP:
$current_server = current_server();
...
define("UI_IMAGES_WIDTH", 1600); //common settings
define("UI_IMAGES_HEIGHT", 1200);
define("UI_IMAGES_SIZE", 200000);
if ($current_server == "dev") { //hosting specific settings
define("USER_DB_HOSTNAME", "...1...");
define("USER_DB_LOGIN", "...2...");
define("USER_DB_PASSWORD", "...3...");
define("USER_DB_NAME", "...4...");
}
if ($current_server == "prod") {
define("USER_DB_HOSTNAME", "...5...");
define("USER_DB_LOGIN", "...6...");
define("USER_DB_PASSWORD", "...7...");
define("USER_DB_NAME", "...8...");
}
...
Есть идеи, как улучшить этот метод? Или может альтернативные предложения?
