Jump to content

Константы в Invision Community

Константы в конфигурации диктуют поведение Invision Community и позволяют произвести гибкую настройку.

Все константы в Invision Community расположены в конфигурационном файле init.php, в корне. Для переопределения стандартных констант в Invision Community предусмотрен специальный механизм хранения изменённых констант в отдельном конфигурационном файле constants.php, что позволяет не потерять изменения при дальнейших обновлениях Invision Community.

 

Использовать бета-релизы? 

Если включить данный параметр, ваш Invision Community предложит в админцентре обновиться на бета-релиз, если компания-разработчик такой выпустила. Рекомендуется для продвинутых пользователей для тестирования нового функционала. 

'USE_DEVELOPMENT_BUILDS' => FALSE,

 

Режим восстановления

Отключает сторонние настройки, если одна из них вызывает проблему, которая препятствует к получению доступа в админцентр. Подробнее про режим восстановления.

'RECOVERY_MODE' => FALSE,

 

Отключить двухфакторную аутентификацию

Может быть использован, если вы заблокировали самого себя при получении доступа к своему аккаунту.

'DISABLE_MFA' => FALSE,

 

Страница ошибки

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

'ERROR_PAGE' => 'error.php',

 

Страница обновления

Данная страница отображается в процессе обновления вашего сообщества. Вы можете указать свою собственную страницу обновления.

'UPGRADING_PAGE' => ( \defined( 'CP_DIRECTORY' ) ) ? CP_DIRECTORY . '/upgrade/upgrading.html' : 'admin/upgrade/upgrading.html',

 

Отключить авторизацию в мастер обновления

Мастер обновления может использовать только стандартный метод авторизации, поэтому, если вы отключили его и используете совершенно другой метод, вам необходимо включить этот параметр, чтобы получить доступ к обновлению.

'BYPASS_UPGRADER_LOGIN' => FALSE,

 

Настройки API лицензионных ключей в Коммерции

Параметры предназначены для использования через API.

'NEXUS_LKEY_API_DISABLE'				=> TRUE,	
'NEXUS_LKEY_API_CHECK_IP'				=> TRUE,	
'NEXUS_LKEY_API_ALLOW_IP_OVERRIDE'	    => FALSE,

 

Ключ шифрования

В некоторых случаях Invision Community шифрует данные. По умолчанию ключ, который используется для этого, основан на имени базы данных и её пароле. Это означает, что если вы когда-либо измените их, данные не смогут быть прочитаны. Так что, если вы *действительно* измените их, вы можете установить эту константу равной md5(old_database_pass + old_database_name), чтобы это исправить.

'TEXT_ENCRYPTION_KEY' => NULL,

 

Зашифровать данные, хранящиеся в Redis?

Необходим в любой среде, где сервер Redis является общедоступным по соображениям безопасности.

'REDIS_ENCRYPT' => TRUE,

 

Настройки хранения / кэширования данных

Для изменения этих данных перейдите в админцентр > Система > Настройки > Дополнительно > Хранение данных и следуйте инструкции. После изменения настроек вам необходимо будет скачать файл constants.php.

'STORE_METHOD' 	=> $storeMethod,	// Метод хранения данных (база данных, Redis или файловая система)
'STORE_CONFIG'	=> $storeConfig,	// JSON-форматированные настройки, необходимые для метода хранения данных
'CACHE_METHOD' 	=> $cacheMethod,	// Метод кэширования (Redis, Memcache и т.д.)
'CACHE_CONFIG' 	=> $cacheConfig,	// JSON-форматированные настройки, необходимые для метода кэширования
'CACHE_PAGE_TIMEOUT' => $guestTimeout,	// Тайм-аут кэширования страниц для страницы в секундах
'REDIS_ENABLED'	=> $redisEnabled,	// Использовать Redis для сессий и счетчиков просмотров темы в дополнение к обычному кешированию?
'REDIS_CONFIG' 	=> $redisConfig,	// JSON-форматированные настройки, необходимые для работы Redis
// Эти параметры не могут быть изменены через админцентр, однако идея та же - позволяет использовать Redis для кэширования:
'OUTPUT_CACHE_METHOD'	=> $outputCache, 	// Метод кэширования страниц для гостей (Redis или база данных)
'OUTPUT_CACHE_METHOD_CONFIG' => $outputCacheConfig,	// JSON-форматированные настройки

 

Параметры окружающей среды. Данные параметры можно менять только в том случае, если вы на 100% уверены в том, что вы делаете. Эти константы обычно не нуждаются в изменении, но в некоторых средах всё же в этом есть необходимость.

 

Отключить проверку IP-адреса при проверке сессий админцентра?

Подробное описание функционала смотрите по ссылке https://invisionbyte.ru/docs/empowerment/config/proverka-ip-adresa-r43/

'BYPASS_ACP_IP_CHECK' => FALSE,

 

Права на файлы

Например права на новые директории для файлов.

'IPS_FOLDER_PERMISSION'		=> 0777,	// Директории с правами на запись
'FOLDER_PERMISSION_NO_WRITE'=> 0755,	// Директории без прав на запись
'IPS_FILE_PERMISSION'		=> 0666,	// Файлы с правами на запись
'FILE_PERMISSION_NO_WRITE'	=> 0644,	// Файлы без прав на запись

 

Директория логов

Обычно логи записываются в базу данных, но если сама база данных не работает, логи записываются на диск. Эта константа устанавливает каталог для использования. {root} может использоваться для корневого каталога сайта.

'LOG_FALLBACK_DIR' => '{root}/uploads/logs',

 

Временная директория

Директория для временных файлов

'TEMP_DIRECTORY'	=> sys_get_temp_dir(),

 

Настройки Cookie

Правильное значение для большинства из них определяется автоматически, поэтому настройка значений не обязательна, за исключением случаев, когда выполняются особые настройки, такие как интеграция с SSO.

'COOKIE_DOMAIN'		=> NULL,		// Домен для установки файлов cookie. По умолчанию используется "specific-subdomain.domain.com" без "." в начале
'COOKIE_PREFIX'		=> 'ips4_',	// Для предотвращения конфликтов добавлен префикс для всех имен файлов cookie.
'COOKIE_PATH'		=> NULL,		// Путь от домена для установки файлов cookie. По умолчанию используется расположение сообщества.
'COOKIE_BYPASS_SSLONLY'	=> FALSE,	// Если сайт работает по протоколу https, мы устанавливаем файлы cookie как "secure" (то есть отправляются только на HTTPS запросы), если параметр не установлен в TRUE.

 

Пороговое значение для поиска

Очень большие таблицы базы данных могут быть очень медленными для поиска, поэтому, если здесь задано значение, а таблица core_search_index имеет больше строк, чем указанное значение, мы по умолчанию ограничиваем поиск до прошлого года.

'USE_MYSQL_SEARCH_BASIC_MODE_THRESHOLD' => 0,

 

Максимальное количество email за раз

Примечание: изменение этого параметра будет иметь очень небольшой практический эффект, потому что пакеты будут обрабатываться быстрее - уменьшение не позволит вам обойти ограничение сервера относительно количества отправляемых писем. Параметр предназначен для предотвращения отправки большего количества данных на сервер электронной почты, чем он может обработать за один раз. Не влияет на некоторые обработчики электронной почты (Sendgrid и IPS Cloud Email), которые переопределяют параметр своими собственными конкретными ограничениями.

'BULK_MAILS_PER_CYCLE' => 50,

 

Уведомлений за раз

Максимальное количество уведомлений для отправки за пакет

'NOTIFICATIONS_PER_BATCH' => 30,

 

Фоновые задачи

Максимальное количество данных, которые нужно перестроить за цикл для фоновых задач

'REBUILD_SLOW'	=> 50,	// Для задач, которые сильно нагружены
'REBUILD_NORMAL'=> 250,	// Для большинства задач
'REBUILD_QUICK'	=> 500,	// Для рутинных быстрых задач

 

Поиск для ботов

Ограничение скорости (в секундах) для ботов при поиске

'BOT_SEARCH_FLOOD_SECONDS' => 30,

 

Настройки обновления

При запуске мастера обновления, если ему нужно выполнить запрос к таблице, соответствующей одному из этих условий, он предложит вам выполнить запрос вручную (т.е. с помощью командной строки), вместо запуска php-скриптом, чтобы предотвратить тайм-аут.

'UPGRADE_MANUAL_THRESHOLD'	=> 250000,		// Больше чем это количество строк
'UPGRADE_LARGE_TABLE_SIZE'	=> 100000000,	// Больше, чем это для того, что MySQL называет "Data_length" в статусе таблицы (значение различно между MySQL и ISAM)

 

Настройки cURL

По умолчанию Invision Community использует cURL, если установлена версия 7.36 или выше, иначе сокеты. (Обычно используется больше для тестирования/отладки, чем в реальных условиях).

'BYPASS_CURL'	=> FALSE,	// Это сделает cURL *никогда* не используемым, даже если он установлен
'FORCE_CURL'	=> FALSE,	// Это позволит использовать cURL, даже если установлена версия ниже 7.36 (не действует, если значение BYPASS_CURL равно TRUE)

 

Тайм-ауты по умолчанию для запросов cURL/socket

Все значения в секундах

'DEFAULT_REQUEST_TIMEOUT'	=> 10,	// Стандартный тайм-аут.
'LONG_REQUEST_TIMEOUT'		=> 30,	// Используется для определенных вызовов на основе API, где мы ожидаем немного более длительного времени ответа.

 

Режим 'ничего не записывать на диск'

Может использоваться для кластерных сред, где ничего не должно быть записано на диск. Отключает такие вещи, как установка приложений/плагинов/тем и запись файлов логов.

'NO_WRITES' => ( isset( $_SERVER['IPS_CIC'] ) and !isset( $_SERVER['IPS_CIC_ACP'] ) ),

 

Устаревшие параметры

Когда-то эти константы были настраиваемыми, но теперь их функциональность следует считать устаревшей.

Смена директории админцентра

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

Хотя это всё ещё используется некоторыми, этот способ больше не рекомендуют, поскольку в настоящее время существуют гораздо более безопасные альтернативы, такие как двухфакторная аутентификация.

'CP_DIRECTORY'	=> 'admin',	    // Название директории, в котором находится админцентр
'SHOW_ACP_LINK'	=> TRUE,		// Показать ссылку на админцентр для авторизованных администраторов?

 

Эти константы вообще ничего не делают, но в Invision Community они хранятся на всякий случай.

'CONNECT_MASTER_KEY' => NULL,	
'CONNECT_NOSYNC_NAMES' => FALSE,

 

Разработчикам/отладка: использовать только на локальных тестовых установках
Эти константы предназначены для разработчиков, работающих над приложениями и плагинами, или для отладки. Их никогда не следует использовать за пределами локального тестового сайта, так как они приведут к значительному снижению скорости, выявлению потенциально чувствительной отладочной информации и непредсказуемому поведению некоторых функций.

Включить режим разработчика

Требуется загрузка дополнительных файлов. Подробности.

'IN_DEV' => FALSE,

 

Выполнить проверки стандартов кода?

Если включено, некоторые аспекты кода будут проверяться, чтобы убедиться, что они соответствуют стандартам кода IPS. Разработчики IPS используют это при разработке, но сторонние разработчики могут захотеть отключить этот параметр. Не имеет никакого эффекта, если IN_DEV FALSE.

'IN_DEV_STRICT_MODE' => TRUE,

 

Скрыть инструменты режима разработчика?

Скрывает режим разработчика, таким образом разработчик может сделать скриншоты, при этом админцентр не будет похожим на то, что сообщество находится в режиме разработчика. Не имеет никакого эффекта, если IN_DEV FALSE.

'DEV_HIDE_DEV_TOOLS' => FALSE,

 

Настройки обработчика ошибок

В режиме разработчика обработчик ошибок Whoops переопределяет обычный обработчик ошибок, чтобы предоставить больше отладочной информации. Этот параметр позволяет вам изменить эти параметры. Также не имеет никакого эффекта, если IN_DEV равен FALSE.

'DEV_USE_WHOOPS' 	=> TRUE,	// Использовать Whoops? Иногда необходимо отключить, чтобы проверить, как программное обеспечение будет вести себя.
'DEV_WHOOPS_EDITOR'	=> NULL,	// Позволяет вам определить ваш редактор, чтобы на странице ошибок была ссылка для открытия файла.

 

Папка на диске для записи исходящих писем вместо их отправки

Используется в средах разработки/тестирования для предотвращения отправки электронных писем или в целях отладки.

'EMAIL_DEBUG_PATH' => NULL,

 

Путь к месту установки Java

Требуется, если вы хотите собрать приложение Core (java выполнит файл .jar)

'JAVA_PATH' => "",

 

Использовать ЧПУ-кеш в режиме разработчика?

Обычно должно быть отключено, чтобы разработчики могли добавлять новые ЧПУ без перестроения. Не будет иметь эффекта, если IN_DEV FALSE.

'DEV_USE_FURL_CACHE' => FALSE,

 

Кэш для меню Создать

Использовать кеш для меню 'Создать' в Режиме разработчика? Обычно следует оставить как есть.

'DEV_USE_MENU_CACHE' => FALSE,

 

Включить отладку CSS?

Обычно CSS-файлы загружаются все в одном запросе, но можно использовать этот параметр для запроса их отдельно для целей отладки. Не имеет никакого эффекта, если IN_DEV FALSE.

'DEV_DEBUG_CSS' => FALSE,

 

Включить отладку Javascript?

Выводит множество информации в консоль для отладки.

'DEBUG_JS'		=> FALSE, // Используется, если режим разработчика выключен (поэтому по умолчанию FALSE)
'DEV_DEBUG_JS'	=> TRUE, // Используется, если режим разработчика включён (поэтому по умолчанию TRUE)

 

Включить отладку шаблонов?

В режиме разработчика шаблоны обычно выполняются с помощью eval(), но это может быть трудно отладить, если шаблон вызывает ошибку. Если этот параметр включен, каждый шаблон будет записан в файл PHP.

'DEBUG_TEMPLATES' => FALSE,

 

Включить логирование отладки

Во всём коде в Invision Community вызывается метод \IPS\Log::debug() с информацией для отладки, но по умолчанию это ничего не делает. Включите параметр, чтобы эта информация была логирована.

'DEBUG_LOG' => FALSE,

 

Включить запись заголовков?

Записывает каждый заголовок, который сервер отправляет (если поддерживается сервером) для целей отладки.

'DEV_LOG_HEADERS' => FALSE,

 

Показать запросы к базе данных?

Если этот параметр включен, на каждую страницу добавляется боковая панель, отображающая все запросы к базе данных, которые эта страница выполняет в целях отладки.

'QUERY_LOG' => FALSE,

 

Показать чтение/запись кэша?

Если этот параметр включен, на каждую страницу добавляется боковая панель, отображающая все операции чтения / записи в кэш-хранилище, которое эта страница выполняет в целях отладки.

'CACHING_LOG'	=> FALSE,	// Используйте это для обычных методов хранения кеша
'REDIS_LOG'		=> FALSE,	// Используйте этот для Redis (который используется не только для обычного хранилища кеша)

 

Включить тестовый метод кеширования?

Если этот параметр включен, будет включен метод «Test», который просто записывает данные кэша куда-то на диск для целей отладки.

'TEST_CACHING' => FALSE,

 

Включить тестовый режим/режим песочницы для платежных шлюзов Коммерции?

Устанавливает все платежные шлюзы в режим тестирования/песочницы и создает общий «Тестовый шлюз», который действует так, как если бы платеж был успешным. Используется в разработке, чтобы можно было тестировать платежи, не отправляя при этом никаких денег.

'NEXUS_TEST_GATEWAYS' => FALSE,

 

Запрашивать двухфакторную аутентификацию каждый раз

Обычно после выполнения двухфакторной аутентификации вас больше не попросят её пройти в этой сесии. Это отменяет такое поведение для целей тестирования.

'DEV_FORCE_MFA' => FALSE,

 

Функциональность OAuth требует https?

Используется только для тестирования. Никогда не отключайте это на живой установке - это огромная проблема безопасности.

'OAUTH_REQUIRES_HTTPS' => TRUE,

 

Тестирование мастера обновлений

Все эти параметры просто используются разработчиками IPS для тестирования аспектов обновления

'TEST_DELTA_ZIP'				=> '',		// Путь к zip-файлу, который будет использоваться мастером обновления вместо загрузки zip-файла с серверов IPS
'TEST_DELTA_TEMPLATE_CHANGES'	=> '',		// Строка JSON, которая будет использоваться в качестве ответа на инструмент различий в темах, который делает мастер обновления, вместо того, чтобы фактически вызывать его
'DELTA_FORCE_FTP'				=> FALSE,	// Вынудит мастер обновления запрашивать FTP данные, даже если он сможет просто записывать файлы
'UPGRADE_MD5_CHECK'				=> TRUE,		// Может использоваться для отмены проверки мастером обновления файлов актуальной версии

 

Использовать старый интерфейс в конвертере?

Используется для целей разработки/тестирования

'CONVERTERS_DEV_UI' => FALSE,

 

Служебные константы. Никогда их не меняйте!

Эти константы существуют только для того, чтобы при изменении их значений разработчикам нужно было обновлять только в одном месте, а не везде в коде. Вам никогда не нужно менять их.

Сообщество работает в облаке?

Используется для жесткого кодирования некоторых настроек, настройки определенных объяснений того, как что-то сделать, и т.д.

'CIC' => isset( $_SERVER['IPS_CIC'] ),

 

Путь к сообществу

'ROOT_PATH' => __DIR__,

 

Случайные строки, которые меняются каждый раз при создании Invision Community

Используется в качестве префикса в некоторых хранилищах данных и механизмах кэширования для предотвращения конфликтов, очистки кэша в URL-адресах ресурсов и т.д. 

Первоначально в invision Community был SUITE_UNIQUE_KEY, но затем было обнаружено, что некоторые люди, вопреки совету разработчиков, устанавливали статические значения, что нарушало работу кэша. Таким образом, теперь SUITE_UNIQUE_KEY рассматривается как «может меняться с каждым релизом, но не обязательно» и добавлено CACHEBUST_KEY как «будет меняться каждый релиз». НЕ устанавливайте значение для этого в constants.php

'SUITE_UNIQUE_KEY'	=> ( isset( $_SERVER['IPS_CIC'] ) and preg_match( '/^\/var\/www\/html\/(.+?)$/i', __DIR__, $matches ) ) ? str_replace( '/', '', $matches[1] ) : mb_substr( md5( 'XXXXXX' . '$Rev: 3023$'), 10, 10 ),
'CACHEBUST_KEY'		=> mb_substr( md5( 'XXXXXX' . '$Rev: 3023$'), 10, 10 ),

 

Размер миниатюры

Это должно быть жестко запрограммировано, а не настраиваться, потому что это наименьший размер, который будет работать в зависимости от того, как мы на самом деле используем эти изображения.

'PHOTO_THUMBNAIL_SIZE'	=> 240, 	// Для фотографий профиля. Максимальное отображаемое нами изображение составляет 120x120, что позволяет использовать двойные размеры для экранов с высоким разрешением
'THUMBNAIL_SIZE' 		=> '500x500', // Для других случайных cbcntv, таких как скриншоты загрузок и изображений записей Страниц. Это просто общий разумный размер.

 

Идентификатор темы по умолчанию

На самом деле изменить это невозможно, но мы определили это как константу, а не на всякий случай просто как «1» в коде. Если вы удалили идентификатор темы 1 и попытались создать собственное приложение в качестве разработчика, вам может потребоваться переопределить это значение, чтобы указать новую стандартную/неизмененную тему.

'DEFAULT_THEME_ID' => 1,

 

Специальные режимы, никогда их не меняйте

Эти константы устанавливаются в определенных областях, поэтому среда знает, что она должна вести себя по-разному. Они НИКОГДА не должны изменяться глобально - очень плохие вещи произойдут, если вы это сделаете.

 

Переключение если неперехваченные исключения должны (если константа включена) будут вернуться в IPS

Установлено в FALSE здесь и в TRUE в самом верху собственных скриптов разработчиков, чтобы любой сторонний код, использующий фреймворк IPS *не включал* это. Обратите внимание, что это не имеет ничего общего с отображением ошибок. НЕ ИЗМЕНЯЙТЕ ЕГО.

'REPORT_EXCEPTIONS' => FALSE,

 

Переключение для разделения чтения/записи MySQL

Вся функциональность разделения чтения/записи MySQL является экспериментальной - это устанавливается в админцентре или мастере обновления.

'READ_WRITE_SEPARATION' => TRUE,

 

Демо режим

Включается на на демо установках. Отключает некоторые функции.

'DEMO_MODE' => FALSE,

 

Режим юнит-теста

Используется для модульного тестирования

'ENFORCE_ACCESS' => FALSE,