Конфигурационный файл приложения

Сперва загружается глобальный конфигурационный файл, а затем конфигурационный файл приложения. Таким образом происходит наследование-переопределение установок.

К установкам конфигурационного файла можно обращаться из кода через app::$config или app::get_config(). Также, через app::get_config() можно получить конфигурацию другого приложения.

 

 

Глобальный конфигурационный файл

Расположен здесь /kernel/configs/kernel.php

 

<?

// Инициализируется в load_config
//$config = [];

// set_exception_handler(array('class_trace','catcher'));



//
// BEGIN REWRITABLE AREA applications
//

$config['applications'] = [
	'site',
];

//
// END REWRITABLE AREA applications
//


// Not used yet.
$config['servers'] = [];

/*

$config['servers'][0] = [
'ip' => '127.0.0.1'
];

*/

$config['http_pages'] = [];
// 0 - service | page | controller
// 1 - имя
$config['http_pages']['404'] = ['service','404'];
$config['http_pages']['403'] = ['service','403'];


//$config['cache_type'] = 'redis';
$config['session_type'] = 'redis';
$config['cache_type'] = 'file';
//$config['session_type'] = 'file';


// Глобальный список с обработчиками событий.
$config['event_listeners'] = [];


$config['document_root'] = $_SERVER['DOCUMENT_ROOT'];

// smarty | native
$config['template_engine'] = 'smarty';


// К основному подключению, можно обратиться следующими вариантами:
// 1) app::$db->select( $sql )
// 2) dbm::get(0)->select( $sql )
// 3) dbm::server(0)->select( $sql )
// 4) dbm::db(0)->select( $sql )
// 5) db(0)->select( $sql )
// А к дополнительным подключениям, по принципу 2, 3, 4 и 5. Причём индекс может быть и строкой.

// Настройка для подключения к БД.
$config['db'] = [];
$config['db']['tp'] = '';
$config['db']['host'] = 'localhost';
$config['db']['port'] = 3306;
$config['db']['db'] = 'bw';
$config['db']['user'] = 'root';
$config['db']['password'] = 'qwerty123';
// TODO
$config['db']['persistent'] = false;

// Дополнительные базы данных (подключения).
// TODO Round robin принцип выбора сервера, через rr_NAME, но вызывать можно будет по NAME, rr_ отбрасывается
$config['databases'] = [];
$config['databases']['slave']['tp'] = '';
$config['databases']['slave']['host'] = 'localhost';
$config['databases']['slave']['port'] = 3306;
$config['databases']['slave']['db'] = '';
$config['databases']['slave']['user'] = 'root';
$config['databases']['slave']['password'] = 'qwerty123';

$config['databases']['slave2']['tp'] = '';
$config['databases']['slave2']['host'] = 'localhost';
$config['databases']['slave2']['port'] = 3306;
$config['databases']['slave2']['db'] = '';
$config['databases']['slave2']['user'] = 'root';
$config['databases']['slave2']['password'] = 'qwerty123';


$config['redis'] = [];
$config['redis']['host'] = 'localhost';
$config['redis']['port'] = 6379;
$config['redis']['db'] = 0;
$config['redis']['user'] = '';
$config['redis']['password'] = '';
$config['redis']['persistent'] = false;

$config['redis_databases'] = [];



// Способ вывода.
// false - если нужно отключить или стоит модуль Apache mod_deflate.
$config['output']['gzip'] = false;
// Подавляющее большинство методик сжатия используют 6-й уровень сжатия
// (из 9-и возможных) для сбережения ресурсов процессора. Как правило,
// разница между 6-м и 9-м уровнем ничтожна, а сбереженные ресурсы системы весьма значительны.
// http://www.nestor.minsk.by/sr/2004/06/40612.html
$config['output']['level'] = 6;

// Определяет время жизни куки с идентификатором сессии.
// Неделя 604800
$config['session']['lifetime'] = 604800;

// Активность пользователя. Измеряется в секундах.
// Допустимое время от последнего обращения к серверу,
// в пределах которого пользователь считается он-лайн.
// Используется в session::get_online().
$config['online_interval'] = 60;

// Сессии

// Не имеет смысла, но всё же задано, так как в функциях по работе с сессиями
// $config['session']['lifetime'] используется напрямую.
ini_set('session.gc_maxlifetime',$config['session']['lifetime']);

// Устанавливает время жизни cookie (в секундах) в браузере.
// Если ноль, значит сессия будет жить пока браузер открыт, как закроется, браузер удалит эту куку.
// Примечание: expiry сессионной cookie не продляется.
ini_set('session.cookie_lifetime',$config['session']['lifetime']);

// Запретить или разрешить вставку SID в URL.
ini_set('session.use_trans_sid',0);

// Запретить автостарт механизма сессий.
ini_set('session.auto_start',0);

// Ошибки

// Виды отображаемых сообщений.
error_reporting(E_ALL & ~E_NOTICE);

// Если включена, последнее сообщение об ошибке
// всегда будет находиться в глобальной переменной $php_errormsg.
ini_set('track_errors',1);

// Отображать ошибки или нет.
// При тестировани - 1, при работе - 0.
ini_set('display_errors', 1);

// Должны ли сообщения об ошибках скриптов записываться в error log сервера.
ini_set('log_errors',1);

// Путь к лог-файлу php.
//ini_set('error_log',$config['dirs']['app'] . '/log/php.log');

// Даже когда display_errors включен, ошибки могут происходить во время запуска PHP и, чтобы
// о них было известно, рекомендуется включить.
// При тестировани - 1, при работе - 0.
ini_set('display_startup_errors',1);

// Безопасность

// Запретить файловым функциям работать с url.
ini_set('allow_url_fopen',0);

// Базовая директория для файловых функций.
//ini_set('open_basedir',$config['dirs']['root']);

// Прочие настройки.

// Кодировка по умолчанию для multibyte string функций.
mb_internal_encoding('utf-8');

// Установка локали, для корректной работы текстовых функций.
setlocale(LC_ALL, array ('ru_RU.UTF-8'));

setlocale(LC_NUMERIC, array('en_US.UTF-8'));

// Отключить автоматическое экранирование кавычек.
// Для избежания sql-injection атак в функциях по работе с БД,
// используется функция app::$db->prepare_sql().
ini_set('magic_quotes_runtime',0);

ini_set('magic_quotes_sybase',0);

//ini_set('register_globals',0);



?>

 

Конфигурационный файл приложения

<?

// Стандартный конфигурационный файл.

$config = [];


if( php_sapi_name() == 'cli' ){

	$config['controller'] = $_SERVER['PWD'] . '/' . $_SERVER['SCRIPT_NAME'];
	$config['controller_name'] = $_SERVER['SCRIPT_NAME'];


	$dir = dirname($_SERVER['SCRIPT_NAME']);
	if( $dir == '.' || $dir == '' ){
		$dir = $_SERVER['PWD'];
	}

	$_SERVER['DOCUMENT_ROOT'] = $dir;

//	$_SERVER['REMOTE_ADDR'] = '127.0.0.1';

}
else {

	$config['controller'] = $_SERVER['SCRIPT_FILENAME'];
	$config['controller_name'] = basename( $config['controller'] );

}

// Идентификатор приложения.
$config['name'] = 'site';

// Имя куки сессии.
$config['session_name'] = 'sid';

// Язык по умолчанию.
$config['language'] = 'ru';

// Интерфейс по умолчанию.
$config['interface'] = 'default';

// Страница по умолчанию.
// 0 - поле таблицы pages name или id.
// 1 - текстовый или числовой идентификатор.
// Переделать на default (page|service|controller)
// [ type => 'Тип', name => 'Название', ... ]
// Тип - page | service | controller
//$config['default_page'] = array( 'name', 'index' );

$config['default_page'] = [
	'type' => 'page',
//	'name' => 'index',
	'name' => 59,
];

// Список доступных языков. Пример array('ru','en','cn').
$config['languages'] = array('ru');

// Список доступных интерфейсов. Названия директорий.
$config['interfaces'] = [ 'default', 'winter', 'summer' ];

// Мульти-язычность. Возможность переключать языки через переменную _language.
$config['ml'] = false;

// Мульти-интерфейсность. Возможность переключать интерфейсы через переменную _interface.
$config['mi'] = false;

// Системные переменные, которые нельзя устанавливать извне.
$config['forbidden_vars'] = [
//	'_inc',
//	'_page',
//	'_language',
//	'_interface',
//	'_sef',
//	'_page',
//	'_service',
//	'_key',
//	'_sid',
// '_json',
// '_sid'
];



// Коды страниц, которые необходимо скрыть в списке страниц в панели управления (CP).
$config['cp_hidden_pages'] = [];


// Пока не используется.
$config['init_subsystems'] = [
	'cache' => true,
	'template_engine' => false,
	'sessions' => true,
	'db' => false,
	'redis' => true,
];


//
// BEGIN Какие части системы подключать на этапе инициализации приложения.
//
// Например может быть не нужным использование БД для контроллеров, но тогда,
// придётся вызвать предварительное подключение к БД, там где оно необходимо.

$config['use_cache'] = true;

// TODO опция для отключения кэша.

// file | redis
$config['cache_engine'] = 'file';
// file | database | redis
$config['session_engine'] = 'redis';
// native | smarty | mixed
$config['template_engine'] = 'mixed';


// Включает или отключает запуск механизма сессий в процессе инициализации приложения.
$config['use_sessions'] = true;

$config['use_redis'] = true;

// Для интервального учёта сессий.
$config['use_extra_sessions'] = false;

// Включает или отключает подключение в БД.
$config['use_db'] = true;

// Включает или отключает создание объекта шаблонизатора.
$config['use_smarty'] = true;
$config['use_template_engine'] = true;



// Список часовых поясов смотреть в документации PHP для
// функции date_default_timezone_set() или в классе ядра class_date.
$config['timezone'] = 'Asia/Yekaterinburg';
$config['check_ip'] = true;

//$config['exception_handler'] = 'exception_handler'; // array('class_trace','exception_handler');
//$config['exception_handler'] = null;
// $config['error_handler'] = array('class_trace','error_handler');
$config['error_handler'] = null;
$config['error_types'] = E_ALL | E_STRICT;


// Режим отладки.
// or dev_mode
$config['debug'] = true;
$config['debug_ip'] = ['192.168.1.244'];

// Для разработки 0.
// Для production сервера -1.
//$config['smarty']['cache_lifetime'] = 3600;


//
// BEGIN URL.
//

// Только домен, без протокола.
$config['domain'] = $_SERVER['HTTP_HOST'];

// URL сайта. Часто совпадает с root_url. Например "http://site.com/".
$config['url']	= ( $_SERVER['SERVER_PORT'] == 443 ? 'https' : 'http' ) . '://' . $config['domain'];

$config['canonical_url'] = 'https://site.ru';

// URL вещуший к контроллеру. Например "http://site.com/cp".
$config['root_url']	= ( $_SERVER['SERVER_PORT'] == 443 ? 'https' : 'http' ) . '://' . $config['domain'];

// URL контроллера. Например "http://site.com/cp/index.php".
$config['controller_url'] = $config['root_url'] . '/' . $config['controller_name'];

// URL к внутренностям (директории) приложения.
$config['internals_url'] = '/internals';

// URL к модулям.
$config['modules_url'] = '/internals/modules';
// URL к блокам.
$config['blocks_url'] = '/internals/blocks';

// URL текущего интерфейса.
$config['interface_url'] = $config['internals_url'] . '/interfaces/' . $config['interface'];

// URL путь к картинкам сайта.
$config['images_url'] = $config['interface_url'] . '/images';

// URL к директории ядра.
//$config['kernel_url'] = ( $_SERVER['SERVER_PORT'] == 443 ? 'https' : 'http' ) . '://' . $config['domain'] . '/kernel';
$config['kernel_url'] = '/kernel';


//
// END URL.
//

$config['always_full_init'] = true;

// Допустимые форматы:
// Название_сервиса
// [ Название_сервиса ]
// [ Название_сервиса, Приложение ]
$config['allowed_services'] = [
//	'404',
//	'403',
//	'500',
//	'503',
	'doc',
	'comments',
	'test',
	'captcha',
];


// Автозагружаемые модули.
// Название_модуля
// [ Название_модуля ]
// [ Название_модуля, Приложение ]
// [ Название_модуля, Приложение, Состояние_модуля ]
$config['autoload_modules'] = [

];

$config['controllers'] = [
	'name' => ['file.php','MyController'],
];

// Допустимые форматы:
// Название_контроллера
// [ Название_контроллера ]
// [ Название_контроллера, Модуль ]
// [ Название_контроллера, Модуль, Приложение ]
$config['allowed_controllers'] = [
	0 => ['test'],
];


// При true, адрес /my/page/ и /My/Page/ - будут разными адресами.
$config['route_case_sensivity'] = false;

//
// BEGIN Routes. Имеет более высокий приоритет, чем правила из sef_url.
//

// Список модулей из которых будут импортированы адреса и обработчики адресов.
$config['import_routes'] = [
	//	'profile'
];

/**
 * Элемент массива, может быть строкой или массивом.
 * Если массив, первый элемент имя модуля, второй - имя приложения.
 */
$config['import_routes_rules'] = [
	//'profile',
];

$config['routes'] = [];
$config['routes_rules'] = [];

//
// END Routes. Имеет более высокий приоритет, чем правила из sef_url.
//


//
// BEGIN Описание приложения.
//

$config['details'] = [];

$config['details']['name'] = 'Приложение "Site".';

$config['details']['author'] = '';

$config['details']['description'] = '';

$config['details']['version'] = '1.0';

//
// END Описание приложения.
//

//
// BEGIN Настройка путей.
//

$config['dirs'] = [];

// Корневая директория сайта.
$config['dirs']['document_root'] = $_SERVER['DOCUMENT_ROOT'];

// Корневая директория приложения, где расположен скрипт (фронт-контроллер, диспетчер) приложения.
// Может отличаться от $_SERVER['DOCUMENT_ROOT'], если приложение размещено в поддиректории.
$config['dirs']['root'] = $config['dirs']['document_root'] . '';

// Директория приложения.
$config['dirs']['internals'] = $config['dirs']['root'] . '/internals';

// Закрытое хранилище для загрузок.
$config['dirs']['uploads'] = $config['dirs']['internals'] . '/uploads';

// Для закрытого кэша.
$config['dirs']['cache'] = $config['dirs']['internals'] . '/cache';

// Для лог файлов.
$config['dirs']['log'] = $config['dirs']['internals'] . '/log';

// Для обмена.
$config['dirs']['exchanger'] = $config['dirs']['internals'] . '/exchanger';

// Сервисы.
$config['dirs']['services'] = $config['dirs']['internals'] . '/services';

// Блоки.
$config['dirs']['blocks'] = $config['dirs']['internals'] . '/blocks';

// Страницы.
$config['dirs']['pages'] = $config['dirs']['internals'] . '/pages';

// Подключаемые страницы.
$config['dirs']['inc_pages'] = $config['dirs']['internals'] . '/inc_pages';

// Модули.
$config['dirs']['modules'] = $config['dirs']['internals'] . '/modules';

// Контроллеры.
$config['dirs']['controllers'] = $config['dirs']['internals'] . '/controllers';

// Интерфейсы.
$config['dirs']['interfaces'] = $config['dirs']['internals'] . '/interfaces';

// Сторонний код.
$config['dirs']['other'] = $config['dirs']['internals'] . '/other';

// Временные файлы.
$config['dirs']['tmp'] = $config['dirs']['internals'] . '/tmp';

// Словари с языковыми переменными.
$config['dirs']['dictionaries'] = $config['dirs']['internals'] . '/dictionaries';

// CLI.
$config['dirs']['cli'] = $config['dirs']['internals'] . '/cli';

// Для открытого кэша: сжатые css/js, нарезанные картинки.
$config['dirs']['pubcache'] = $config['dirs']['internals'] . '/pubcache';

// Любые подключаемые файлы.
$config['dirs']['includes'] = $config['dirs']['internals'] . '/includes';

//
// END Настройка путей.
//

$config['phpmailer'] = [];
$config['phpmailer']['user'] = 'admin@yandex.ru';
$config['phpmailer']['password'] = '';
$config['phpmailer']['host'] = 'smtp.yandex.ru';
$config['phpmailer']['port'] = 465;

$config['use_phpmailer'] = true;

$config['admin_email'] = 'admin@yandex.ru';

// 3 | 4
$config['tinymce'] = 3;

// Тип визуального редактора по умолчанию, если явно не указан в полях типа FieldWysiwyg.
// native | tinymce3 | tinymce4
$config['wysiwyg'] = 'tinymce4';

// http://ulogin.ru/help.php#networks
$config['ulogin_networks'] = [];
$config['ulogin_networks']['vkontakte'] = 'ВКонтакте';
$config['ulogin_networks']['twitter'] = 'Twitter';
$config['ulogin_networks']['mailru'] = 'Mail.ru';
$config['ulogin_networks']['facebook'] = 'Facebook';
$config['ulogin_networks']['odnoklassniki'] = 'Одноклассники';
$config['ulogin_networks']['yandex'] = 'Яндекс';
$config['ulogin_networks']['google'] = 'Google';
$config['ulogin_networks']['steam'] = 'Steam';
$config['ulogin_networks']['soundcloud'] = 'Soundcloud';
$config['ulogin_networks']['lastfm'] = 'Last.FM';
$config['ulogin_networks']['linkedin'] = 'LinkedIn';
$config['ulogin_networks']['liveid'] = 'Live ID';
$config['ulogin_networks']['flickr'] = 'Flickr';
$config['ulogin_networks']['uid'] = 'uID';
$config['ulogin_networks']['livejournal'] = 'Живой журнал';
$config['ulogin_networks']['openid'] = 'Open ID';
$config['ulogin_networks']['webmoney'] = 'Webmoney';
$config['ulogin_networks']['youtube'] = 'Youtube';
$config['ulogin_networks']['foursquare'] = 'foursquare';
$config['ulogin_networks']['tumblr'] = 'tumblr';
$config['ulogin_networks']['googleplus'] = 'Google+';
$config['ulogin_networks']['dudu'] = 'dudu';
$config['ulogin_networks']['vimeo'] = 'Vimeo';
$config['ulogin_networks']['instagram'] = 'Instagram';
$config['ulogin_networks']['wargaming'] = 'Wargaming.net';


$config['message_length_limit'] = 100000;

// {source} - файл источник
// {destination} - файл назначения
$config['yui_js_compressor'] = '/usr/bin/java -jar ' . app::$kernel_dir . '/other/yuicompressor-2.4.8.jar {source} -o {destination} --type js';

// {source} - файл источник
// {destination} - файл назначения
$config['yui_css_compressor'] = '/usr/bin/java -jar ' . app::$kernel_dir . '/other/yuicompressor-2.4.8.jar {source} -o {destination} --type css';


// yui | cssmin
$config['css_compressor_type'] = 'cssmin';

// yui | jsmin
$config['js_compressor_type'] = 'jsmin';



$config['merge_css'] = false;
$config['minimize_css'] = false;

$config['merge_js'] = false;
$config['minimize_js'] = false;


// Установить часовой пояс.
date_default_timezone_set( $config['timezone'] );

// Блок переопределения отдельных файлов модулей.
// Ключи можно посмотреть в файле .metadata/files.php или module/files.php
$config['overrides']['modules']['pages'] = [
//	'list.tpl' => $config['dirs']['root'] . '/internals/interfaces/default/templates/custom_pages_list.tpl',
];



$config['hide_external_links'] = false;

// Интервал уникальности хита.
$config['stat_visit_unique_time'] = 60;

?>
© Автор и разработчик Михаил Шершнёв, 2006–2021
E-mail: support@bwframework.ru