Очень много информации на нашем сайте по настройке многосайтовости, но эта тема почему-то всегда вызывает много вопросов. Хотя на мой взгляд здесь всё довольно просто.
Ну начнём с того, что на одной установке Битрикса можно сделать много сайтов (без покупки
дополнительных лицензий
можно сделать два сайта), а значит закроем первый вопрос: для настройки многосайтовости надо установить Битрикс только один раз.
Есть довольно подробный
учебный курс
, где описывается два способа настройки многосайтовости.
Какой способ выбрать?
Существует мнение, что пользователь выбирает для себя сам удобный способ многосайтовости, однако в действительности выбор способа зависит от настроек системы.
Первый способ предполагает (на папках), что сайты находятся в одном домене, но в разных папках. Он годится для создания сайтов на разных языках или, например, региональных сайтов одной компании.
Адреса сайтов будут иметь вид:
http://example.com/ru
http://example.com/en
или
http://example.com/
http://example.com/KGD
http://example.com/SPB
Если тематика сайтов разная, видимо, не обойтись без настройки второго способа, когда разные сайты находятся в разных доменах, пример:
http://www.bitrixsoft.ru/
http://www.bitrixsoft.com/
Оба сайта работают на одной копии продукта, но внешне это никак не проявляется. Это выглядит привлекательнее, но требует чуть больше усилий для настройки.
Особо хочу обратить внимание, что далее речь идёт о работе на хостинге, когда все настройки сервера делает администратор. Если вы настраиваете многосайтовость локально, необходимо предварительно настроить виртуальные веб сервера. Можно посмотреть об этом на
официальном сайте
Apache (и в русской части Интернета море статей на эту тему).
Теперь несколько слов о том, как система определяет текущий сайт.
Откроем настройки сайта (Настройки — Настройки продукта — Сайты — Список сайтов):
Здесь можно указать доменное имя и папку сайта — это основные параметры настройки многосайтовости, остальные определяют приоритеты.
Сначала система проверяет текущий домен: из настроек всех сайтов выбираются домены и сопоставляются с доменом на котором находится пользователь. При этом сравнивается только правая часть до точки (т.е. все поддомены автоматически относятся к этому домену). Например, в настройках указано
example.com
а пользователь открыл
www.example.com
будет считаться условие выполненным. Но если он откроет my-example.com — это уже другой домен, его надо отдельно указывать в списке доменных имён.
Если доменные имена не указаны или на разных сайтах указаны одинаковые домены, то определение происходит по папке сайта. Обратите внимание, что здесь указывается папка относительно корня сайта (т.е. путь в URL), а не путь в файловой системе на сервере.
В дальнейшем идентификатор сайта используется для подключения шаблона, выбора новостей, определения языка и т.д.
Пример:
В настройках одного сайта указана папка /, другого /ru.
При открытии example.com/forum/messages/ попадаем на первый сайт, при открытии example.com/ru/forum/messages/ — на второй.
При этом папка bitrix (содержащая ядро продукта) лежит в корне, никуда не копируется и никакие другие настройки на сервере не делаются. Это всё понятно и просто.
Гораздо больше вопросов и проблем возникает с настройкой многосайтовости по второму способу, когда нам необходимо обслуживать одной установкой Битрикс несколько сайтов в разных доменах. Остановимся на этом подробнее.
Многосайтовость по второму способу (мини HOWTO)
Сначала нужно определиться, что мы хотим получить. Будем считать, что имеем два домена:
example.com
example.net
Они имеют разные корневые папки (т.е. при обращении к каждому из них открываются файлы из разных физических папок на сервере). Существует вариант, когда при обращении к любому домену открывается одна и та же папка на сервере (ниже рассмотрим такой вариант), но именно первый вариант является предпочтительным.
При этом хочу обратить внимание на следующие моменты:
- все домены должны указывать на один сервер, вариант, когда разные домены настроены на разных хостеров, неприемлем;
- в нашем случае (когда корневые папки доменов разные) не имеет значения, имеем мы разные домены второго уровня или поддомены одного домена (например, games.example.com и example.com). А если быть вернее, то это вообще не имеет значения. То что нас действительно должно интересовать: общая ли у них корневая папка или нет;
- вариант, когда настраивается большое число поддоменов, которые формируются динамически (например, vasya.example.com, kolya.example.com и т.д.) вообще не является многсайтовостью в контексте нашего продукта, и соответственно руководства многосайтовости сюда не применимы. Рассмотрим этот вариант ниже. Если говорить грубо, то многосайтовость Битрикса — когда настроено несколько сайтов в списке сайтов в настройках продукта.
Задача: настроить многосайтовость по второму способу на UNIX-хостинге.
Шаг за шагом.
1. Устанавливаем Битрикс на один из доменов (не важно, на какой). Для ясности считаем, что
установили
продукт на example.com. Пока никакие дополнительные настройки не делаем.
2. Теперь необходимо заставить работать ту же копию на втором домене.
Считаем, что публичная часть у сайтов разная (иначе зачем нужны разные сайты?), поэтому для второго сайта потребуется только ядро продукта (папка bitrix, ну и upload). Теоретически, если их просто скопировать из первого сайта, то будет работать, но нас это не устроит (приходилось сталкиваться с такой «многосайтовостью»).
Получим две копии ядра, которые работают с одной базой данных, после обновления одного из них обновится база данных, и второй сайт перестанет работать (ну и кроме того, копирование ядра противоречит лицензии).
Проблема решается использованием
символических ссылок
. Если говорить образно, ссылка выполняет задачу ярлыка на рабочем столе, который открывает программу, но сам программой не является.
Руководство по многосайтовости рекомендует выносить ядро в общую папку shared, затем делать символические ссылки в каждом сайте. Здесь для простоты изложения я упрощу этот шаг и сделаю ссылку с одного сайта на другой (с функциональной точки зрения разницы нет).
Набросал небольшой скрипт, который поможет создать символические ссылки при использовании только ftp доступа к серверу:
<html>
<head><title>Создание ссылок на папки bitrix и upload</title></head>
<body>
<?
error_reporting(E_ALL & ~E_NOTICE);
@ini_set("display_errors",1);
if ($_POST['path'])
$path = rtrim($_POST['path'],"/\");
else
$path = '../site2/www';
if ($_POST['create'])
{
if (preg_match("#^/#",$path))
$full_path = $path;
else
$full_path = realpath($_SERVER['DOCUMENT_ROOT'].'/'.$path);
if (file_exists($_SERVER['DOCUMENT_ROOT']."/bitrix"))
$strError = "В текущей папке уже существует папка bitrix";
elseif (is_dir($full_path))
{
if (is_dir($full_path."/bitrix"))
{
if (symlink($path."/bitrix",$_SERVER['DOCUMENT_ROOT']."/bitrix"))
{
if(symlink($path."/upload",$_SERVER['DOCUMENT_ROOT']."/upload"))
echo "<font color=green>Символические ссылки удачно созданы</font>";
else
$strError = 'Не удалось создать ссылку на папку upload, обратитесь к администратору сервера';
}
else
$strError = 'Не удалось создать ссылку на папку bitrix, обратитесь к администратору сервера';
}
else
$strError = 'Указанный путь не содержит папку bitrix';
}
else
$strError = 'Неверно указан путь или ошибка прав доступа';
if ($strError)
echo '<font color=red>'.$strError.'</font><br>Исходный путь: '.$full_path;
}
?>
<form method=post>
Путь к папке, содержащей папки bitrix и upload: <input name=path value="<?=htmlspecialchars($path)?>"><br>
<input type=submit value='Создать' name=create>
</form>
Скрипт необходимо закачать в корневую папку второго сайта (в нашем случае, example.net), затем после запуска указать путь к корневой папке первого сайта (или папке shared, если ядро находится в ней).
Предположим, первый сайт находится в папке:
/var/www/denis/example.com/www
второй:
/var/www/denis/example.net/www
Записываем скрипт в папку /var/www/denis/example.net/www, в поле путь пишем «../../example.com/www» или «/var/www/denis/example.com/www«. Если всё будет нормально, в папке /var/www/denis/example.net/www появятся нужные символические ссылки.
На этом этапе могут возникнуть проблемы:
- нет прав на запись в текущую папку;
- действует ограничение безопасности (open_basedir), которое не позволяет пользователям разделяемого хостинга обращаться к другим сайтам.
В случае возникновения проблем с этим скриптом следует обратиться за помощью к хостеру.
После того как ссылки созданы должно происходить следующее: набираем example.net/bitrix/admin, открывается панель авторизации, вводим данные администратора, которые указывали при установке продукта на example.com и попадаем в административную панель Битрикса.
Поскольку ядро одно и база одна — административная панель для обоих сайтов будет одинаковая (т.е. одна и та же).
Теперь надо скопировать с первого сайта .access.php (чтобы был доступ на чтение корневого раздела, при необходимости можно вручную отредактировать его, удалив всё кроме $PERM[«/»][«*»]=»R»;) и index.php (который потом будет редактироваться).
3. Настройка сайтов.
Открываем настройки каждого сайта (Настройки — Настройки продукта — Сайты — Список сайтов), указываем в поле «Доменное имя:» example.com и example.net соответственно для первого и второго сайта.
Последнее, что надо здесь сделать — указать путь на сервере к корневой папке каждого сайта (поле «Путь к корневой папке веб-сервера для этого сайта:») для того чтобы модуль управления структурой построил дерево файлов каждого сайта (меню «Контент»):
указываем /var/www/denis/example.com/www и /var/www/denis/example.net/www соответственно.
4. Проверка публичной части.
Если всё было сделано правильно, сейчас на разных доменах должны открываться разные сайты. Для этого воспользуемся простейшим скриптом:
<?require($_SERVER['DOCUMENT_ROOT']."/bitrix/header.php");?> <? echo "SITE_ID = ".SITE_ID; ?> <?require($_SERVER['DOCUMENT_ROOT']."/bitrix/footer.php");?>
Сохраним в корне обоих сайтов, при обращении к скрипту в домене example.com должен отобразиться идентификатор (двухбуквенное отображение) первого, в домене example.net — идентификатор второго сайта.
Всё. Задача решена.
А если общая корневая папка?
Это не удобно в первую очередь потому что публичная часть сайтов будет общая. Но если другого варианта нет, можно настроить многосайтовость и здесь. Только для разделения публичной части в корне сайта придётся создать папки для каждого сайта и фактически получится многосайтовость по первому способу.
Теперь коротко по шагам. Условия задачи прежние, но будем считать что домены example.com и example.net имеют одну корневую папку /var/www/denis/example
1. Ставим продукт в любом домене один раз.
2. Для разделения публичной части создаём в папке /var/www/denis/example папки com и net. Здесь ядро имеет путь /var/www/denis/example/bitrix для обоих сайтов, и символические ссылки создавать не требуется.
3. В настройках сайтов теперь помимо домена нужно указать папку сайта: /com и /net для первого и второго сайта.
4. Создаём индексную страницу сайта по примеру из учебного курса. Эта страница по домену будет определять текущий сайт и подключать соответствующую публичную часть. Только для этого надо было указать домены в настройках сайтов. Привожу здесь код скрипта:
<?
// подключим файл с классом CMainPage
require($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/main/include/mainpage.php");
// получим идентификатор текущего сайта по доменному имени
$site_id = CMainPage::GetSiteByHost();
// получим абсолютный путь к индексной странице папки сайта
$page = CMainPage::GetIncludeSitePage($site_id);
// если сайт определен и определена индексная страница то
if(strlen($site_id)>0 && strlen($page)>0)
{
// подключим страницу
require_once($page);
}
else // иначе если сайт не определен то
{
require($_SERVER['DOCUMENT_ROOT']."/bitrix/header.php");
// далее можно разместить код который будет отображаться если
// сайт ранее не был определен
?>
<?require($_SERVER['DOCUMENT_ROOT']."/bitrix/footer.php");
}
?>
Настройка завершена.
Много поддоменов на одном сайте
К примеру, на сайте пользователи после регистрации получают свой домен вида user.example.com. При обращении к такому домену хотим открывать блог пользователя.
1. Лучше всего в такой ситуации для всех поддоменов использовать отдельную от основной корневую папку сайта. Договариваемся с хостером, что для example.com открывается /var/www/denis/example.com, а для всех поддоменов (за исключением www.example.com) корневой папкой является /var/www/denis/blogs. Ставим Битрикс на example.com.
2. Создаём символьные ссылки как описано выше для многосайтовости по второму способу, но никакую дополнительную настройку Битрикса (как указание доменов в настройке сайта) делать не требуется.
3. Создаём индексную страницу в папке /var/www/denis/blogs, размещаем на ней компонент bitrix:blog.blog. Обратите внимание, это не комплексный компонент блогов, а компонент, отображающий содержимое конкретного блога.
4. На этой же странице перед подключением компонента вставляем код, который будет определять текущий идентификатор блога на примере следующего:
<?
if (!preg_match("#^www.([^.]+).#",$_SERVER["HTTP_HOST"],$regs)) // если набрали с "www": www.user.example.com
preg_match("#^([^.]+).#",$_SERVER["HTTP_HOST"],$regs);
$BLOG_ID = $regs[1];
?>
Далее в параметрах компонента в качестве идентификатора блога указываем переменную $BLOG_ID. Всё должно работать.
Заключение
Получилось много текста, в действительности действий то совсем не много. Попытался осветить основные вопросы, которые возникают у клиентов по вопросам многосайтовости при обращении в техподдержку. Надеюсь, изложение поможет чуть лучше понять вопрос и решать проблемы используя эти знания.
Содержание
- Проблемы с переходом на php7
- Проблемы с переходом на php7
- Fatal error: require_once(): Failed opening required?
- Fatal error: require_once(): Failed opening required?
- Проблемы с агентами cron
Проблемы с переходом на php7
| Цитата |
|---|
| Андрей Коваль написал: $DBType = «mysqli»; // было $DBType = «mysql»; |
Должно быть mysql
ip_address — это вместо цифр, которые там прописаны.
должно быть mysql, но php7 не поддерживает mysql. так ведь?
При $DBType=’mysql’ ошибка та же (
Андрей Коваль, на моей эталонной машинке (php7):
| Цитата |
|---|
| Андрей Коваль написал: спасибо, у меня также, только не «пляшет», буду разбиратся |
Коллеги, прошу помощи!
После переезда на сервер c PHP7 выдает ошибку:
2018-12-13 09:33:44 — Host: zzzz.ru — UNCAUGHT_EXCEPTION — [ErrorException] E_DEPRECATED
Function create_function() is deprecated (0)
/home/zzzz/htdocs/bitrix/modules/main/lib/eventmanager.php:302
#0: BitrixMainEventManager->loadEventHandlers()
/home/zzzz/htdocs/bitrix/modules/main/lib/eventmanager.php:340
#1: BitrixMainEventManager->findEventHandlers(string, string)
/home/zzzz/htdocs/bitrix/modules/main/classes/general/module .php:340
#2: GetModuleEvents(string, string, boolean)
/home/zzzz/htdocs/bitrix/modules/main/include.php:283
#3: require_once(string)
/home/zzzz/htdocs/bitrix/modules/main/include/prolog_before.php:14
#4: require_once(string)
/home/zzzz/htdocs/bitrix/modules/main/include/prolog.php:10
#5: require_once(string)
/home/zzzz/htdocs/bitrix/header.php:1
#6: require(string)
/home/zzzz/htdocs/complex-solution/domestic.php:2
———-
Пожалуйста, помогите решить проблему. Спасибо!
Источник
Проблемы с переходом на php7
| Цитата |
|---|
| Андрей Коваль написал: $DBType = «mysqli»; // было $DBType = «mysql»; |
Должно быть mysql
ip_address — это вместо цифр, которые там прописаны.
должно быть mysql, но php7 не поддерживает mysql. так ведь?
При $DBType=’mysql’ ошибка та же (
Андрей Коваль, на моей эталонной машинке (php7):
| Цитата |
|---|
| Андрей Коваль написал: спасибо, у меня также, только не «пляшет», буду разбиратся |
Коллеги, прошу помощи!
После переезда на сервер c PHP7 выдает ошибку:
2018-12-13 09:33:44 — Host: zzzz.ru — UNCAUGHT_EXCEPTION — [ErrorException] E_DEPRECATED
Function create_function() is deprecated (0)
/home/zzzz/htdocs/bitrix/modules/main/lib/eventmanager.php:302
#0: BitrixMainEventManager->loadEventHandlers()
/home/zzzz/htdocs/bitrix/modules/main/lib/eventmanager.php:340
#1: BitrixMainEventManager->findEventHandlers(string, string)
/home/zzzz/htdocs/bitrix/modules/main/classes/general/module .php:340
#2: GetModuleEvents(string, string, boolean)
/home/zzzz/htdocs/bitrix/modules/main/include.php:283
#3: require_once(string)
/home/zzzz/htdocs/bitrix/modules/main/include/prolog_before.php:14
#4: require_once(string)
/home/zzzz/htdocs/bitrix/modules/main/include/prolog.php:10
#5: require_once(string)
/home/zzzz/htdocs/bitrix/header.php:1
#6: require(string)
/home/zzzz/htdocs/complex-solution/domestic.php:2
———-
Пожалуйста, помогите решить проблему. Спасибо!
Источник
Fatal error: require_once(): Failed opening required?
Доброго времени суток!
Имеется файл init.php. Его путь:
В init.php имеется строка:
Путь до файла list.php:
Fatal error: require_once(): Failed opening required ‘/var/www/user/data/www/site.ru/ac/include/modules/list.php’ (include_path=’.:/usr/share/php:/usr/share/pear’) in /var/www/user/data/www/site.ru/engine/init.php on line 478
Что вызывает данную ошибку?
- Вопрос задан более трёх лет назад
- 56348 просмотров
Оценить 5 комментариев
Так. Ладно. Решил фейковые адреса использовать и только себе хуже сделал. Давайте с самого начала.
Имеется файл init.php. Его путь:
В init.php имеется строка:
Путь до файла list.php:
Fatal error: require_once(): Failed opening required ‘/var/www/user/data/www/site.ru/ac/include/modules/list.php’ (include_path=’.:/usr/share/php:/usr/share/pear’) in /var/www/user/data/www/site.ru/engine/init.php on line 478
Надеюсь, щас я прояснил свою проблему.
какая структура каталога?
dirname ( __FILE__ ) . «/folder1/folder2/folder3/index.php» — странное описание для местонахождения файла.
когда вы делаете
в скрипте, находящимся по адресу
фактически вы получаете файл
ведь dirname(__FILE__) получает директорию исполняемого скрипта, если я ничего не путаю. Вы уверены, что этого и добивались?
ну и второй вариант — права на чтение и исполнение у list.php
1.
Имеется файл init.php. Его путь:
/var/www/user/data/www/site.ru/engine/init.php
2.
require_once dirname ( __FILE__ ) . ‘/ac/include/modules/list.php’;
=> полный путь требуемого файла:
/var/www/user/data/www/site.ru/engine/ac/include/modules/
А файл, по вашим словам лежит в:
/var/www/user/data/www/site.ru/ac/include/modules/ (не хватает engine)
а можно сюда результат команд:
$ cd /var/www/user/data/www/site.ru/engine/ac/include/modules/
$ ls -l
и
$ cd /var/www/user/data/www/site.ru/ac/include/modules/
$ ls -l
Заодно проверьте регистр расширения файла. Может там PHP, а не php
Источник
Fatal error: require_once(): Failed opening required?
Доброго времени суток!
Имеется файл init.php. Его путь:
В init.php имеется строка:
Путь до файла list.php:
Fatal error: require_once(): Failed opening required ‘/var/www/user/data/www/site.ru/ac/include/modules/list.php’ (include_path=’.:/usr/share/php:/usr/share/pear’) in /var/www/user/data/www/site.ru/engine/init.php on line 478
Что вызывает данную ошибку?
- Вопрос задан более трёх лет назад
- 56348 просмотров
Оценить 5 комментариев
Так. Ладно. Решил фейковые адреса использовать и только себе хуже сделал. Давайте с самого начала.
Имеется файл init.php. Его путь:
В init.php имеется строка:
Путь до файла list.php:
Fatal error: require_once(): Failed opening required ‘/var/www/user/data/www/site.ru/ac/include/modules/list.php’ (include_path=’.:/usr/share/php:/usr/share/pear’) in /var/www/user/data/www/site.ru/engine/init.php on line 478
Надеюсь, щас я прояснил свою проблему.
какая структура каталога?
dirname ( __FILE__ ) . «/folder1/folder2/folder3/index.php» — странное описание для местонахождения файла.
когда вы делаете
в скрипте, находящимся по адресу
фактически вы получаете файл
ведь dirname(__FILE__) получает директорию исполняемого скрипта, если я ничего не путаю. Вы уверены, что этого и добивались?
ну и второй вариант — права на чтение и исполнение у list.php
1.
Имеется файл init.php. Его путь:
/var/www/user/data/www/site.ru/engine/init.php
2.
require_once dirname ( __FILE__ ) . ‘/ac/include/modules/list.php’;
=> полный путь требуемого файла:
/var/www/user/data/www/site.ru/engine/ac/include/modules/
А файл, по вашим словам лежит в:
/var/www/user/data/www/site.ru/ac/include/modules/ (не хватает engine)
а можно сюда результат команд:
$ cd /var/www/user/data/www/site.ru/engine/ac/include/modules/
$ ls -l
и
$ cd /var/www/user/data/www/site.ru/ac/include/modules/
$ ls -l
Заодно проверьте регистр расширения файла. Может там PHP, а не php
Источник
Проблемы с агентами cron
Добрый день!
Сайт на Битрикс распологается на сотинге reg.ru
У фрилансеров заказали подсайты для регионов. После этого начались проблемы на основном сайте с планировщиком.
При выполнении задачи
/opt/php/7.2-bx-optimized/bin/php -c
/www/site.ru/bitrix/modules/main/tools/cron_events.php
в планировщике возникает ошибка
u0111111$ /opt/php/7.0-bx-optimized/bin/php -c
/www/site.ru/bitrix/modules/main/tools/cron_events.php
PHP Warning: require_once(/var/www/u0111111/data/www/sbx15.hosting.reg.ru:1500/bitrix/modules/main/start.php): failed to open stream: No such file or directory in /var/www/u0111111/data/www/site.ru/bitrix/modules/main/include.php on line 10
PHP Fatal error: require_once(): Failed opening required ‘/var/www/u0111111/data/www/sbx15.hosting.reg.ru:1500/bitrix/modules/main/start.php’ (include_path=’.:’) in /var/www/u0111111/data/www/site.ru/bitrix/modules/main/include.php on line 10
на 2 подсайтах теже самые задачи выполняются без проблем.
Скрипты полностью идентичны, т.к. подсайты были полностью скопированы с основного.
В поддержке регру сначало посоветовали:
«Сравнили скрипты, различий не выявлено. Как мы можем видеть ,сейчас tlt.site.ru добавлен как автоподдомен для site.ru. Учитывая особенности CMS Битрикс, которая некорректно работает с автоподдоменами, мы рекомендуем добавить tlt.site.ru как отдельный www-домен и проверить актуальность проблемы.»
Но это результатов не дало. После этого они открестились:
«Как уже сообщалось ранее проблем со стороны хостинга не наблюдаем. Задание в планировщике написано корректно. Вопрос диагностики работы скриптов сайта выходит за рамки услуг, оказываемых специалистами технической поддержки хостинга. Для решения подобного вопроса мы рекомендуем вам обратиться к специалистам, которые занимались разработкой вашего сайта. Кроме того, интересующую вас информацию вы можете найти на тематических ресурсах, посвящённых разработке используемой вами CMS.»
Источник
Перехали на новый сервер, вылетела ошибка.
Fatal error: require_once(): Failed opening required ‘/home/bitrix/www/local/modules/custom.module/lib/exception.php’ (include_path=’.:/usr/share/pear:/usr/share/php’) in /home/bitrix/www/bitrix/modules/main/lib/loader.php on line 313 PHP Fatal error: Uncaught Error: Class ‘BitrixMainDiagExceptionHandlerLog’ not found in /home/bitrix/www/bitrix/modules/main/lib/diag/exceptionhandler.php:350
Проверил все пути вручную, файлы на месте. На сторонних форумах нашёл такое объяснение:
If you break apart your string «.:/usr/share/pear:/usr/share/php» using that character, you will get 3 parts
. (this means the current directory your code is in)
/usr/share/pear
/usr/share/ph
Any attempts to include()/require() things, will look in these directories, in this order.
Не пойму, в моём случае require_once() пытается найти файлы в /usr/share/pear и /usr/share/php ? Какие-то настройки на сервере надо править так? Или я не верно понимаю проблему?
-
Вопрос заданболее трёх лет назад
-
4788 просмотров
Пригласить эксперта
/usr/share/pear и /usr/share/php — это альтернативные пути для различных библиотек.
Проверьте права на чтение здесь ‘/home/bitrix/www/local/modules/custom.module/lib/exception.php’
Скорее всего, вы не учитываете регистр файлов, который под Windows не имеет значения, а под другими ОС имеет.
Попробуйте переименовать
/bitrix/modules/main/lib/diag/exceptionhandlerlog.php
в
/bitrix/modules/main/lib/Diag/ExceptionHandlerLog.php
Ну и другие файлы также (если там используется совместимый с PSR-4 автолоадер)
По какой-то загадочной причине пользователи похапе en masse не читают подробное объяснение ошибки, предоставленное интерпретатором РНР, предпочитая гадание на кофейной гуще.
Казалось бы, объяснение прямо под носом: ищем файл в папке local
/home/bitrix/www/local/modules/custom.module/lib/exception.php
в то время как в реальности файлы приложения лежат в папке bitrix
/home/bitrix/www/bitrix/modules/main/lib/loader.php
То есть можно предположить банально неверную конфигурацию приложения.
-
Показать ещё
Загружается…
10 февр. 2023, в 08:59
1000 руб./за проект
10 февр. 2023, в 08:22
2000 руб./за проект
10 февр. 2023, в 04:49
50000 руб./за проект
Минуточку внимания
Почему не открывается каталог на сайте?
Показывает ошибку
Fatal error: require_once(): Failed opening required '/home/e/eremenko79/public_html/bitrix/php_interface/dbconn.php' (include_path='.:/opt/php56/share/pear:/usr/share/pear') in /home/e/eremenko79/public_html/bitrix/modules/main/include/urlrewrite.php on line 34
что это?
Похожие вопросы
Alex
15 дек в 2022
156
1C Bitrix и REST API
Всем привет. Нужна некоторая консультация от разработчиков битрикса) Собираемся делать нативное приложение и нужно сделать так чтобы заказы из приложения и сайта были в одном месте. Может ли битрикс выступать в роли бэка в этом плане? Обмен будет через…
Здравствуйте! Возникла проблема в работе с сайтом
сайт на битриксе.
почему в директории upload папки sale, tmp и uf доступны для редактирования только под рутовым доступом?
Поддомен из папки с сохранением параметров. Мультиязычность Битрикс.
Настраиваю мультиязычность Битрикс. Из папки нужно отдать информацию поддомену. Написал:
RewriteBase /
RewriteCond %{HTTP_HOST} ^en.site.ru$
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/en(?:/|$)
RewriteRule ^(.*)$ en/$1 [L,QSA]
И…
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Войти в Комьюнити
Регистрация в Комьюнити
Восстановление пароля



