Конфигурационный файл приложения
Сперва загружается глобальный конфигурационный файл, а затем конфигурационный файл приложения. Таким образом происходит наследование-переопределение установок.
К установкам конфигурационного файла можно обращаться из кода через 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;
?>