Битрикс. Файл init.php
29.05.2018
Теги: CMS • init.php • PHP • Web-разработка • Битрикс
Сам по себе файл не обязательный, особенность его в том, что он подключается в начале каждой страницы сайта и служит для инициализации обработчиков событий или подключения дополнительных функций. То есть, в нем можно размещать код, который необходим для выполнения на каждой странице сайта.
Последовательность очереди подключения можно посмотреть в документации по Битрикс: первым идет подключение пролога, а затем init.php
.
Если в системе несколько сайтов, то можно создать отдельную директорию для каждого сайта с индивидуальным init.php
. Имя каждой директории совпадает с ID
сайта. Первым подключается файл из директории bitix/php_interface
, а потом — из bitix/php_interface/ID
.
Кроме того, файл init.php
может быть создан в директории local/php_interface
или в директории local/php_interface/ID
. Если такие файлы есть, они будут использованы вместо файлов в директории bitrix
. Это директория как раз и нужна для того, чтобы ничего не менять в ядре Битрикс. Битрикс в первую очередь смотрит local
и только если файлы не найдены, ищет их в bitrix
.
Если файл init.php
будет создан в директории bitrix/php_interface
, то в случае ошибки в коде, весь сайт перестанет работать, в том числе и админка (т.е. через админку исправить ошибку не получится). Если файл будет создан в директории bitix/php_interface/ID
, то в случае ошибки кода, сайт перестанет работать, но админку это не затронет, и через панель управления можно будет внести правки в init.php
.
Если файл bitrix/php_interface/init.php
содержит ошибки, получаем белый экран и текст:
При выполнении скрипта возникла ошибка. Включить расширенный вывод ошибок можно в файле настроек .settings.php
Зайти в панель управления и иcправить ошибку теперь нельзя. Чтобы избежать такой ситуации, надо вынести содержимое файла init.php
в отдельный файл и подключить его другим способом.
<?php /* * Файл local/php_interface/init.php */ // session_start(); if (isset($_GET['noinit']) && $_GET['noinit'] === 'yes') { $_SESSION['work_without_init'] = 1; } if ( ! isset($_SESSION['work_without_init'])) { if (is_file($_SERVER['DOCUMENT_ROOT'].'/local/php_interface/init/script.php')) { // в этот файл вынесен весь код из файла init.php require_once $_SERVER['DOCUMENT_ROOT'].'/local/php_interface/init/script.php'; } }
В подключаемом файле допущена ошибка, нет ;
после функции define()
:
<?php /* * Файл local/php_interface/include/init.php */ define('DEFAULT_TEMPLATE_PATH', '/local/templates/.default')
Но, набрав в адресной строке
http://www.server.com/?noinit=yes
можно не подключать файл с ошибкой и получить доступ к панели управления. И уже в панели управления исправить ошибку.
Поиск: CMS • PHP • Web-разработка • init.php • Битрикс