«1С-Битрикс: Управление сайтом» — одна из самых популярных коммерческих CMS. Как и в случае с любой другой CMS, при работе с Битриксом возникают разные ошибки, мешающие нормальной работе сайта. Выявить их можно с помощью встроенного функционала проверки системы в панели администратора Битрикс.
Чтобы запустить проверку системы, перейдите в панель администратора по ссылке https://example.com/bitrix/admin (замените example.com на ваш домен), введите логин и пароль учетной записи администратора сайта, перейдите в Настройки — Инструменты — Проверка системы и нажмите на кнопку Начать тестирование. Дождитесь окончания проверки. В форме Проверка системы могут быть ошибки, которые, на первый взгляд, не влияют на работу сайта, однако требуют внимания владельца или системного администратора сайта.
В данной статье рассмотрим способы устранения популярных ошибок, возникающих в CMS Битрикс.
- Ошибка «The script encountered an error and will be aborted. To view extended error messages, enable this feature in .settings.php.» при переходе на сайт
- «Замечание. Агенты выполняются на хитах, рекомендуется перевести выполнение агентов на cron» при проверке системы
- Ошибка работы с сокетами при проверке системы
- Ошибка! Не работает «Отправка почты» и «Отправка почтового сообщения больше 64Кб» при проверке системы
- «Служебные скрипты в корне сайта. Ошибка! Файл существует» при проверке системы
- Ошибка «Загрузка файла» и «Загрузка файла больше 4Мб» при проверке системы
Ошибка «The script encountered an error and will be aborted. To view extended error messages, enable this feature in .settings.php.» при переходе на сайт
Такая ошибка в большинстве случаев означает некорректное подключение к базе данных. В первую очередь проверьте, работает ли СУБД, введя следующую команду в терминал:
# systemctl status mysql
Если СУБД работает, проверьте файлы, расположенные в /home/bitrix/www/bitrix/.settings.php
и /home/bitrix/www/bitrix/php_interface/dbconn.php
(при необходимости замените /home/bitrix/www
на корневую директорию вашего проекта, далее в статье будут использованы относительные пути вида /bitrix/php_interface/dbconn.php
). В этих файлах указываются доступы для подключения к базе данных сайта.
Для файла .settings.php
'host' => 'localhost', 'database' => 'database_name', 'login' => 'user_name', 'password' => 'secret_password',
Для файла dbconn.php
$DBHost = "localhost"; $DBLogin = 'user_name'; $DBPassword = 'secret_password’; $DBName = "database_name";
Проверьте корректность указанных данных:
- хост базы данных (должен быть localhost, если СУБД установлена локально),
- название базы данных (замените в обоих файлах
database_name
на название своей базы данных), - имя пользователя базы данных (замените
user_name
на имя своего пользователя базы данных) - и пароль пользователя базы данных (замените
secret_password
на пароль пользователя вашей базы данных).
Иногда бывает, что при развертывании сайта из бэкапа на новом сервере вместо данных указываются звездочки. В таком случае просто укажите свои данные в обоих файлах.
«Замечание. Агенты выполняются на хитах, рекомендуется перевести выполнение агентов на cron» при проверке системы
При проверке системы Битрикс часто возникает замечание выполнения агентов на cron. Данное замечание не мешает работе сайта, однако может повлиять на выполнение разных функций вашего проекта, например, на отправку почты.
Как правило, для настройки выполнения агентов на cron достаточно следовать рекомендациям проверки системы. Для этого нажмите на вопросительный знак справа от уведомления:
Однако такой способ срабатывает не всегда. Если в файле /bitrix/php_interface/dbconn.php
есть строка define('BX_CRONTAB_SUPPORT', true);
и в cron есть задание на ежеминутный запуск скрипта /var/www/bitrix/modules/main/tools/cron_events.php
, попробуйте следующее решение.
Отключим выполнение агентов на хитах, для этого в панели администратора Битрикс переходим в Настройки — Инструменты — Командная PHP-строка, вводим следующую команду и нажимаем Выполнить:
COption::SetOptionString("main", "agents_use_crontab", "N"); echo COption::GetOptionString("main", "agents_use_crontab", "N"); COption::SetOptionString("main", "check_agents", "N"); echo COption::GetOptionString("main", "check_agents", "Y");
Результат выполнения PHP-команды должен быть «NN».
Далее в файле /bitrix/php_interface/dbconn.php
закомментируем следующие строки (добавьте перед строками знак #):
define("BX_CRONTAB_SUPPORT", true); define("BX_CRONTAB", true);
После чего в этот же файл dbconn.php добавьте строки:
if(!(defined("CHK_EVENT") && CHK_EVENT===true)) define("BX_CRONTAB_SUPPORT", true);
Далее необходимо из учетной записи владельца сайта (если вы работаете в консоли сервера из-под учетной записи root, что не рекомендуется, после создания файла измените владельца файла с помощью команды chown
) создать новый файл cron_events.php в директории /bitrix/php_interface/
и добавить в него следующий код:
<?php $_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__)."/../.."); $DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"]; define("NO_KEEP_STATISTIC", true); define("NOT_CHECK_PERMISSIONS",true); define('BX_NO_ACCELERATOR_RESET', true); define('CHK_EVENT', true); define('BX_WITH_ON_AFTER_EPILOG', true); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); @set_time_limit(0); @ignore_user_abort(true); CAgent::CheckAgents(); define("BX_CRONTAB_SUPPORT", true); define("BX_CRONTAB", true); CEvent::CheckEvents(); if(CModule::IncludeModule('sender')) { BitrixSenderMailingManager::checkPeriod(false); BitrixSenderMailingManager::checkSend(); } require($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/main/tools/backup.php"); CMain::FinalActions(); ?>
После того, как файл создан с нужными правами, добавляем его в cron. Обязательно делаем это для владельца сайта, так как задания cron для пользователя root могут стать серьезной угрозой безопасности для сайта и сервера. Выполним следующую команду (в нашем случае владелец сайта — bitrix, замените это значение на имя пользователя своего сайта при необходимости):
# crontab -ubitrix -e
Откроется файл с заданиями crontab пользователя сайта. Вставьте следующую строку:
*/1 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.php
В данной строке значение */1 * * * *
означает выполнение скрипта раз в минуту, вы можете скорректировать частоту выполнения в зависимости от ваших требований к проекту.
Путь /usr/bin/php
— путь для PHP, оставьте его таким же, если у вас на сервере нет альтернативных версий PHP. Если вы используете панель ISPmanager, возможно, ваш сайт работает на альтернативной версии PHP. Проверить версию можно в панели ISPmanager, а узнать корректный путь для PHP — с помощью команды whereis php
в консоли сервера. Например, для альтернативной версии PHP 8.1 путь может быть таким: /opt/php81/bin/php
. Замените путь к скрипту /home/bitrix/www/bitrix/php_interface/cron_events.php
на свой в случае необходимости.
Если в cron есть запись для выполнения скрипта /var/www/bitrix/modules/main/tools/cron_events.php
— ее лучше закомментировать.
Ошибка работы с сокетами при проверке системы
При проверке системы в панели администратора Битрикс может возникнуть ошибка «Работа с сокетами. Ошибка! Не работает».
Также из-за ошибки работы с сокетами другие тесты проводятся некорректно, выдавая ошибку «Замечание. Не удалось проверить из-за ошибки в работе с сокетами».
В большинстве случаев такая ошибка появляется после переноса проекта на новый сервер или при развертывании проекта на локальном компьютере для тестирования. Возникает данная ошибка из-за того, что IP-адрес сервера отличается от IP-адреса, указанного в А-записях домена на серверах DNS. Если вы переносите проект на новый сервер, необходимо указать IP-адрес нового сервера в А-записях и дождаться глобального обновления DNS.
Если А-записи указаны корректно, возможно в файле /etc/hosts
на сервере указан неверный IP для вашего домена. Проверьте файл и укажите правильное значение:
1.2.3.4 example.com
Замените 1.2.3.4
на IP адрес вашего сервера, а example.com
на доменное имя вашего сайта.
Бывает, что на сервере может возникнуть проблема с корневыми сертификатами. Можно попробовать обновить их. В CentOS 7 ведите в консоли сервера:
# yum install ca-certificates -y # update-ca-trust
Ошибка! Не работает «Отправка почты» и «Отправка почтового сообщения больше 64Кб» при проверке системы
Из описания ошибки понятно, что она означает. В большинстве случаев для устранения данной ошибки требуется вмешательство системного администратора или технической поддержки Битрикс. Проблем, из-за которых почта не работает, много. Они могут быть на стороне сервера, в настройках проекта, либо из-за некорректно работающих модулей отправки почты.
Битрикс использует стандартную функцию php mail()
для отправки почты, однако нередко используются другие способы, например, через внешний почтовый сервер. Для проверки работы php mail()
можно воспользоваться инструкцией из ответов на часто задаваемые вопросы на форуме Битрикс.
Также можно выполнить проверку с помощью следующего кода PHP (вставьте его в командную строку PHP в панели администратора Битрикс):
$mail="test@testmail.ru"; // укажите ваш почтовый ящик, на который нужно отправить тестовое письмо $subject ="test" ; // укажите любую тему письма $text= "test message"; // укажите любой текст письма if( mail($mail, $subject, $text) ) { echo 'Письмо отправлено!'; } else{ echo 'Ошибка! Не отправлено'; }
Если письмо не пришло, но вы получили уведомление «Письмо отправлено», значит, письма уходят и проблема в настройках CMS либо в модуле отправки почты. В данном случае можно обратиться в техподдержку Битрикс для выявления проблем в настройках CMS или к разработчику модуля отправки почты.
Не исключено, что письмо просто попало в спам. Можно попробовать отправить на другой почтовый ящик (с другим почтовым доменом). Если письмо пришло — значит, адрес отправителя в черном списке почтового домена, до которого письмо не дошло. Если письмо не дошло — возможно, ваш почтовый домен или IP-адрес попали в глобальные черные списки.
Если письмо не пришло, а вы получили уведомление «Отправка не удалась» — необходимо более детальное изучение проблемы. В таком случае потребуется вмешательство системного администратора.
«Служебные скрипты в корне сайта. Ошибка! Файл существует» при проверке системы
Такая ошибка говорит о наличии в корне сайта служебных скриптов, например, restore.php. Данные скрипты, как правило, добавляют временно для проведения каких-либо работ (например, restore.php — для восстановления сайта из резервной копии). Так или иначе, после выполнения работ такие скрипты необходимо удалить с сервера, так как они представляют угрозу безопасности сайту и данным.
Ошибка «Загрузка файла» и «Загрузка файла больше 4Мб» при проверке системы
Проверка системы Битрикс загружает файл размером более 4Мб. В большинстве случаев такая ошибка говорит об ограничениях в параметре upload_max_filesize
для PHP.
Необходимо в файле конфигурации PHP установить данное значение выше 4Мб и перезапустить веб-сервер. В зависимости от окружения файл конфигурации PHP может находится в разных местах. Обычно данное значение устанавливается в файле /etc/php.ini
.
Если вы используете панель ISPmanager — поправить конфигурацию можно прямо в ней: выберите нужный сайт, нажмите на кнопку PHP в верхней панели, найдите параметр upload_max_filesize
и укажите нужное значение. Если вы используете окружение BitrixVM, необходимо вносить изменения в специальные файлы конфигурации, чтобы после перезагрузки сервера они не вернулись в исходное состояние. Подробнее можете узнать по ссылке.
Загрузка…
Почему появляется ошибка?
Ошибка появляется потому, что проверка сайта обнаружила наличие данного файла в корне сайта.
На что эта ошибка влияет?
Этот файл может предоставить злоумышленникам дополнительную информацию о сервере, что ставит под угрозу безопасность всего сайта.
Как исправить ошибку?
Все что следует сделать — удалить данный файл из корня сайта, и всё!
Требуется наша помощь?
Мы имеем огромный опыт, на протяжении 10 лет помогая клиентам в решении самых различных проблем на их сайтах.
Поэтому, если Вы не имеете возможности решить эту проблему самостоятельно, обращайтесь к нам — мы все сделаем оперативно и квалифицированно.
Пытаюсь перенести сайт на 1С-Битрикс на виртуальный сервер VPS, панель управления Vesta. Сделал резервную копию. Кинул её файлы и restore.php (скачал по ссылке из официального урока) в нужную папку виртуального сервера. Права на родительскую папку — 751, на файлы — 644. Владелец — root. Другой сайт с такими же правами функционирует нормально.
Когда захожу из браузера https://***.ru/restore.php , меня вместо страницы приветствует сообщение об ошибке:
Не могу записать файл /home/***/public_html/restore.php. Место на диске: 13.56Gb
-
Вопрос задан13 дек. 2022
-
793 просмотра
Пригласить эксперта
Если у вас хостинг и нет возможности сделать бэкап средствами хостинга, то сделайте бэкап средствами битрикс с пропуском логов и кеша без пароля.
Из папки /bitrix/backup скачайте архив на компьютер, пересоберите архив: распакуйте архив, соберите все части в Тотал Коммандер, например, упакуйте в zip и залейте его в корень сайта, средствами админки Vesta распакуйте zip.
Запустите restore.php, выберите, что архив уже распакован, и там же выберите импортировать БД.
Инструмент бэкапа через restore.php иногда криво работает с файлами.
Найти информацию про распаковку битриксовского архива можно тут
https://qna.habr.com/q/373442
-
Показать ещё
Загружается…
06 июн. 2023, в 10:14
170000 руб./за проект
06 июн. 2023, в 09:58
100000 руб./за проект
06 июн. 2023, в 09:53
2000 руб./за проект
Минуточку внимания
30 сентября 2014 года стало известно об уязвимости в программном обеспечении компании Akeeba. Уязвимость позволяет удалённо загрузить шелл, не имея никаких прав в системе. Уязвимости подвержены как сами продукты Akeeba: Akeeba Backup, Akeeba Solo, Akeeba CMS Update, Akeeba Admin Tools, так и ВНИМАНИЕ: все версии Joomla 2.5 до версии 2.5.27, а также версии 3 до 3.3.5.
Дело в том, что в стандартном компоненте обновлений Joomla используются скрипты компании Akeeba. И Joomla и Akeeba выпустили свои обновления, закрывающие данную уязвимость, однако они не посчитали это критической уязвимостью и поэтому очень многие не обратили на это особого внимания.
Действительно, воспользоваться уязвимостью хакер может только тогда, когда вы делаете резервную копию вашего сайта, либо производите обновление версии сайта. То есть это всего несколько секунд о которых хакер должен ещё каким то образом и узнать.
Как это работает:
Ошибка, позволяющая произвести атаку, находится в файле restore.php, который в Joomla расположен по адресу administrator/components/com_joomlaupdate/restore.php. Когда вы к примеру выполняете обновление, то рядом с этим файлом создаётся ещё временный файл restoration.php, который автоматически удаляется по завершению обновления. Пока файл restoration.php существует, хакер может отправить специальный запрос к файлу restore.php и залить на ваш сайт всё что угодно. Времени у него очень мало, так как обновление занимает считанные секунды. Именно по этому никто особого внимания данной уязвимости не придал.
Но есть одно огромное НО. Если в процессе обновления возникла ошибка (что довольно часто случается), то файл restoration.php не удаляется, а продолжает находиться рядом с файлом restore.php. И ваш сайт превращается в полное решето, теперь хакер может заливать шелл когда угодно.
Для исправления уязвимости достаточно произвести обновление Joomla и компонентов от Akeeba до последней версии. Перед обновлением мы рекомендуем заглянуть в папку administrator/components/com_joomlaupdate/ и посмотреть, есть ли там файл restoration.php. Если он есть, то вполне возможно, что ваш сайт уже взломали.
Если обновление по каким то причинам выполнить невозможно, то для исправления данной уязвимости достаточно заменить файл restore.php на новую версию, где уязвимость закрыта. Скачать данный файл можно здесь.
Если вам необходима помощь — вы в любой момент можете обратиться к нашим специалистам.