Где в Битрикс расположен файл init.php в файловой структуре Bitrix
Выше описаны стандартные варианты расположения init.php в битрикс, но на вашем сайте может быть подключено 2-4 init.php, а возможен и такой вариант, что файлы init.php отсутствуют вовсе. Если на вашем сайте есть несколько файлов init.php /bitrix/php_interface/init.php и /bitrix/php_interface/ID сайта/init.php то сначала подключится файл /bitrix/php_interface/init.php, а потом /bitrix/php_interface/ID сайта/init.php Если вы не нашли файл init.php по одному из указанных путей, то не пугайтесь, файл init.php в битрикс не обязательный и следовательно создается разработчиками или установочным модулем по необходимости. Вывод один: если файла init.php нет, то вероятно файл еще никто не создавал и вам нужно просто создать его в нужном месте.
Назначение файла init.php в Битрикс
Зная где в битрикс расположен файл init.php, вы сможете его редактировать. Зачем вам нужно редактировать этот файл? Если вы владелец магазина или обычный контент редактор, то лучше не пробовать, если разработчик, то редактирование этого файла може принести не мало пользы. Особеностью файла init.php в битрикс является то, что файл автоматически подключается в прологе сайта и может содержать в себе инициализации обработчиков событий и дополнительные функции, которые будут выполняться на всех страницах сайта.
Как работать с файлом init.php
- 1. Всегда вносите изменения только по ftp или sftp или хотя бы убедитесь в том, что у вас есть доступ к сайту по ftp/sftp — это будет полезно, если вы допустите ошибку в файле и сайт перестанет работать.
- 2. Не начинайте init.php в битрикс с пустой строки или с комментария, т.к. это с большой долей вероятности вызовет ошибку и сайт перестанет работать.
- 3. Если вам нужно написать много кода в файле init.php, то даже сам битрикс советует делать это с разделением на логические куски, разделение кода на файлы и подключение этих файлов через require_once в init.php
Что делать, если после изменения init.php сайт перестал работать
Перед началом работы с файлом init.php я советую сохранить локальную копию где-то у себя на компьютере и при возникновении ошибки просто вернуть исходный код, но если вы уже допустили ошибку в файле init.php и сайт перестал работать, а запущена к примеру реклама, то есть достаточно простой способ быстро решить проблему — переименовать файл например так «test_init.php», таким образом вы снова запустите сайт, но стоит отметить, что весь функционал, который был прописан в init.php будет неработоспособным, поэтому переименование файла — не решение проблемы, а временная мера, которая поможет быстро восстановить работу сайта.
Москва 2024г.
Информация на сайте не является публичной офертой
Битрикс. Файл init.php
Сам по себе файл не обязательный, особенность его в том, что он подключается в начале каждой страницы сайта и служит для инициализации обработчиков событий или подключения дополнительных функций. То есть, в нем можно размещать код, который необходим для выполнения на каждой странице сайта.
Последовательность очереди подключения можно посмотреть в документации по Битрикс: первым идет подключение пролога, а затем 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 в отдельный файл и подключить его другим способом.
/* * Файл 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() :
/* * Файл local/php_interface/include/init.php */ define('DEFAULT_TEMPLATE_PATH', '/local/templates/.default')
Но, набрав в адресной строке
http://www.server.com/?noinit=yes
можно не подключать файл с ошибкой и получить доступ к панели управления. И уже в панели управления исправить ошибку.
- Битрикс. Включаемая область
- Битрикс. Простой компонент «Список новостей»
- Битрикс. Файл .settings.php
- Битрикс. Создание шаблона
- Битрикс. Подключение файлов js и css в шаблоне
- Битрикс. Установка по шагам
- WordPress. Установка и использование WP-CLI
Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Категории блога
Облако тегов
- 1С:Предприятие (31)
- API (29)
- Bash (43)
- CLI (124)
- CMS (139)
- CSS (50)
- Frontend (75)
- HTML (66)
- JavaScript (150)
- Laravel (72)
- Linux (171)
- MySQL (76)
- PHP (125)
- React.js (66)
- SSH (27)
- Ubuntu (69)
- Web-разработка (509)
- WordPress (73)
- Yii2 (69)
- БазаДанных (95)
- Битрикс (66)
- Блог (29)
- Верстка (43)
- ИнтернетМагаз… (84)
- КаталогТоваров (87)
- Класс (30)
- Клиент (28)
- Ключ (28)
- Команда (88)
- Компонент (60)
- Конфигурация (66)
- Корзина (32)
- ЛокальнаяСеть (32)
- Модуль (34)
- Навигация (31)
- Настройка (143)
- ПанельУправле… (29)
- Плагин (33)
- Пользователь (26)
- Практика (101)
- Сервер (77)
- Событие (28)
- Теория (106)
- Установка (67)
- Файл (51)
- Форма (58)
- Фреймворк (192)
- Функция (36)
- ШаблонСайта (68)
Где в 1C-Bitrix находится (лежит) файл init.php?
Раз вы набрели на этот пост, значит, вы знаете, что ищете. Для остальных немного поясню: init.php – это необязательный (то есть при работе с некоторыми сайтами вы можете его не обнаружить) файл в рамках структуры файлов CMS, в котором инициализируются обработчики событий и подключаются дополнительные функции. Файл автоматически подключается в прологе. В будущих постах мы будем часто работать с этим файлом, дорабатывая и расширяя функционал сайта.
Итак, несмотря на то, что файл необязательный, он может находиться в разных местах файловой структуры CMS 1C-Bitrix.
Первое место:
/bitrix/php_interface/
Файл отсюда подключается ко всем имеющимся сайтам (если их несколько), а также затрагивает работу панели управления сайтом. В случае если вы редактировали файл по этому пути через панель управления и допустили ошибки, которые привели к неработоспособности сайта, восстановительные работы нужно будет проделывать уже через файловый менеджер хостинга или по FTP/SSH.
Второе место:
/bitrix/php_interface/ID_сайта/
ID сайта можно узнать в панели управления сайтом, раздел «Настройки» — «Настройки продукта» — «Сайты» — «Список сайтов»:

На открывшейся странице смотрите в колонку «ID».
Особенность этого файла в том, что он подключается только на указанном сайте без панели управления (в ней отсутствует понятие сайта), а это значит, что в случае наличия ошибок в этом файле панель управления сайтом остаётся в рабочем состоянии.
Если существует два файла по первому и второму пути, то подключатся оба – сначала файл по первому пути, затем по второму.
Начиная с версии CMS 14.0.1, рекомендуется помещать файл init.php в папку /local/.
Поэтому следующие места, где может находиться этот файл, это:
/local/php_interface/
/local/php_interface/ID_сайта/
Порядок подключения при наличии файла по обоим путям здесь аналогичный первым двум вариантам: сначала подключается файл из /local/php_interface/, затем из /local/php_interface/ID_сайта/.
Если файл лежит по одинаковому пути /local/ и /bitrix/, то файл из /bitrix/ подключен не будет.
Поскольку файл необязательный (об этом я упомянул в самом начале поста), то он может отсутствовать по всем указанным путям. Если же этот файл необходим вам для проведения работ, создайте его по нужному пути, руководствуясь информацией, указанной в данном посте.
init.php в БИТРИКС как с ним работать
По немного приучаемся работать с документацией битрикс, в уроке разберем такой файл как init.php , его назначение, где он находиться, какие задачи выполняет и как с ним работать.
Определение:
init.php — необязательный файл в рамках структуры файлов Bitrix Framework. Он автоматически подключается в прологе при загрузке страницы.
Назначение файла init.php
Сам по себе файл не обязательный, особенность его в том, что он подключается в начале каждой страницы сайта и служит для инициализации обработчиков событий или подключение дополнительных функций.
То есть, в нем мы можем размещать код, который необходим для выполнения на каждой странице сайта.
Последовательность очереди подключения можно посмотреть в документации по битрикс, переходим на сайт документации для разработчиков, воспользуемся поиском, введем «страница подключение» и тут видим, первое идет подключение пролога, а за тем наш init.php .
Если в системе несколько сайтов, то делается отдельная директория с ID сайтом, где для каждого сайта можем создать индивидуальный init.php .
Расположение, создание файла init.php
Сам файл init.php располагается в структуре сайта, в папке bitrix > php_interface > init.php и как упоминал выше он не обязательный, а следовательно, может вовсе там отсутствовать.
Давайте его создадим через административную часть, жмем кнопку добавить, выбираем из списка «Добавить файл». Перед нами появилась форма по созданию нового файла, укажем редактировать через PHP , прописываем название нашего файла init.php , из области редактирования все удаляем.
Для примера, определим в нем свою константу:
Нажмем кнопку Применить.
Затем перейдем на сайт, откроем тестовую страничку и в режиме кода вызываем константу которую определяли в init , сохраняемся.
Получаем вывод значении dwstv. То есть, таким образом можно работать как при использовании стандартных функций php, а также писать свой код или задействовать API битрикс.
Функция распечатки массива
Для примера создадим свою функцию, которая будет принтовать переданный в неё массив в удобном оформлении для разработчика.
Открываем init.php на редактирование, вставляем свой код функции, и разберем, как она работает.
GetID() == 1) || ($all == true)) < $bt = debug_backtrace(); $bt = $bt[0]; $dRoot = $_SERVER["DOCUMENT_ROOT"]; $dRoot = str_replace("/","\\",$dRoot); $bt["file"] = str_replace($dRoot,"",$bt["file"]); $dRoot = str_replace("\\","/",$dRoot); $bt["file"] = str_replace($dRoot,"",$bt["file"]); ?> File: [] if($die) < die; >> ?>
Функция принимает один обязательный параметр, $var в который передаем массив, и два не обязательных параметра, $die и $all .
В моем случае я в начале проверяю пользователя на его ID , то есть только принтую данный массив себе, если желаете вывести массив для администраторов тогда можно воспользоваться методом $USER->IsAdmin() который позволяет распечатать массив для группы администраторов.
Что бы ознакомиться с методом $USER->IsAdmin() более подробно, перейдите в документацию 1С — битрикс, в поиске пропишите IsAdmin , вот у нас есть его описание, мы видим что данный метод делает и какие его параметры использования.
Возвращаемся к нашей функции, пишем оператор (ИЛИ), где является данный параметр $all равный true . Это сделано для возможности распечатать массив без авторизации.
Ниже принтовка в оформлении, а затем условие на завершение всех операций после отработки скрипта. Этим параметром пользуюсь, когда необходимо.
Сохранимся и перейдем на тестовую страничку. Пропишем простенький массив:
И распринтуем его с помощью нашей функции
Сохранимся, как видим, появилась распечатка массива.
Если мы сейчас разлогинимся то массив нам не отобразится.
Давайте теперь повторно авторизуемся и добавим в нашу функцию дополнительный параметру $all какое ни будь значение, и теперь этот массив будут видеть все пользователи в том числе, не авторизованные.
Тоже самое если нам нужно завершить все операции, тогда для параметра $die введем значение и сохранимся.
Как видите, с правой стороны исчез правый сайтбар, снизу пропал footer .
Таким образом, работает данный скрипт, кто желает скачать его код, ссылка в верху под видео.
Как правильно писать код в init.php
Часто встречаются, что некоторые разработчики в файл init.php начинают беспорядочно заносить свои код, его становится много, выглядит он не структурировано, и превращается это все в свалку, где самому разработчику сложно разобраться в дальнейшем.
Битрикс в этом случае рекомендует разбивать код логическими группами, по отдельным файлам и классам, подключая их через директиву include .
Давайте прислушаемся к рекомендации, и весь код подключим отдельно.
Для этого откроем init.php , скопируем весь наш код который до этого вносили Переходим в папку include , если у Вас ее нет, создайте, в ней размещаем файл functions-dump.php и перенесем полностью нашу функцию с init.php , сохранимся.
В init.php в место функции подключаем файл functions-dump.php , для этого прописываем условие на проверку file_exists .
С помощью $_SERVER[«DOCUMENT_ROOT»] подключаемся к корню нашего сайта, далее пишем путь до файла и если он присутствует, при помощи директивы require_once подключаем его к init.php
Сохраняемся, и мы получили вот такую ошибку.
Parse error: syntax error, unexpected ‘/’ in /home/httpd/vhosts/dws.mcdir.ru/httpdocs/bitrix/php_interface/init.php on line 1
Как избежать такого рода ошибок
Я специально допустил синтаксическую ошибку, что бы Вам показать, как при редактировании файла init.php можно получить ошибку, которая полностью отрубит сайт, как визуальную, так и его административную части.
Все это приведет к потере работоспособности и невозможности что-то исправить без доступа FTP или SSH.
Как можно работать через Веб
Если у Вас доступ для работы с сайтом через веб, тогда наиболее простой способ, нужно содержание файла init.php вынести в отдельный файл и подключить его другим способом в init .
Давайте покажу, как это все делается. В первую очередь исправлю ошибку.
Допустим, у нас не было ошибки, но мы знаем о том, что такое может случиться. Перейдем, в наш init.php , переносим код из файла. Далее пройдем в нашу директорию include создаем тут файл initswitch.php сохраняемся.
Открываем на редактирование init.php , и в нем прописываем следующее условие подключение.
if (isset($_GET['noinit']) && !empty($_GET['noinit'])) < $strNoInit = strval($_GET['noinit']); if ($strNoInit == 'N') < if (isset($_SESSION['NO_INIT'])) unset($_SESSION['NO_INIT']); >elseif ($strNoInit == 'Y') < $_SESSION['NO_INIT'] = 'Y'; >> if (!(isset($_SESSION['NO_INIT']) && $_SESSION['NO_INIT'] == 'Y')) < if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/include/initswitch.php")) require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/include/initswitch.php"); >
Давайте сохранимся и посмотрим, все ли у нас работает. Для этого перейдем на тестовую страницу, и видим, что массив у нас отображается, все работает, замечательно.
Теперь все подключать будем при помощи initswitch.php . И так, перейдем в него и повторим нашу ошибку, открываем initswitch.php , допускаем синтаксическую ошибку, и сохраняемся.
Сайт отрубился, как административная часть, так и визуальная его часть не доступна.
Теперь что бы его реанимировать, нам нужно в адресной строке прописать параметр, тем самым производим отключение файла initswitch.php , а параметр &noinit=N как вы догадались, наоборот его включает.
Тут же не выходя, открываем адресную строку и прописываем параметр &noinit=Y , мы попали в админку а дальше дело техники.
Мое личное мнение, все же рекомендую работать с файлом init.php через FTP, так как не совсем удобно кодировать через редактор и править такого рода ошибки.
И так, придерживаясь данных правил:
- не пишите напрямую код в init.php ;
- используйте отдельный файл для хранения функционала;
- и все файлы в init.php подключайте через require_once() .
Кому понравилось материал обязательно поделитесь им в социальных сетях, статью подготовил Горелов Денис.