Forbidden
Access denied.
Сообщение появляется и в админке, и в публичной части.
Как это починить?
Сообщение не похоже на ошибку Forbidden от Apache, видимо, её выводит сам Битрикс.
Скорее всего срабатывает какой-нибудь модуль безопасности.
Чтобы временно отключить его, надо найти файл bitrix/modules/main/include.php
Там найти код вида:
foreach (GetModuleEvents("main", "OnPageStart", true) as $arEvent)
ExecuteModuleEventEx($arEvent);
Этот код вызывает обработчики, который запускаются самыми первыми при обработке запроса. В том числе там могут быть обработчики модулей, которые ограничивают доступ. Нужно закомментировать этот код и попробовать войти в админку. Если не помогло, то в этом же файле ниже есть еще один похожий блок:
foreach(GetModuleEvents("main", "OnBeforeProlog", true) as $arEvent)
ExecuteModuleEventEx($arEvent);
Надо закомментировать его и снова попробовать зайти.
Если получилось, то дело точно в каком-либо модуле. Чтобы поточнее узнать, в каком именно, можно заменить код на такой (для первого блока):
foreach (GetModuleEvents("main", "OnPageStart", true) as $arEvent) {
print_r($arEvent);
ExecuteModuleEventEx($arEvent);
}
После обновления страницы будет Forbidden, а перед ним массивы, описывающие события. Последним (самым нижним) событием и будет то, которое привело к сообщению Forbidden. Выглядит это примерно так:
...
Array
(
[SORT] => 100
[TO_MODULE_ID] => security
[TO_PATH] =>
[TO_CLASS] => Bitrix\Security\HostRestriction
[TO_METHOD] => onPageStart
[TO_METHOD_ARG] => Array
(
)
[VERSION] => 2
[TO_NAME] => Bitrix\Security\HostRestriction::onPageStart (security)
[FROM_DB] => 1
[FROM_MODULE_ID] => main
[MESSAGE_ID] => OnPageStart
)
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<h1>Forbidden</h1>
Access denied.
</body>
</html>
Здесь видно, что сработало действие HostRestriction модуля security.
Чтобы отключить его в админке, нужно зайти в "Настройки" -> "Проактивная защита" -> "Хосты/домены"
Там надо:
- Снять галку "Ограничивать".
- В списке доменов указать имя сайта для разработки или маску, под которую он подойдет (например,
*.dev.loc
). - Нажать Сохранить.
Теперь можно восстанавливать исходное состояние
include.php
. Важно не забыть это сделать, потому что иначе могут перестать работать какой-нибудь другой важный функционал.