Перейти к содержимому

Проверка системы - что смотрит и что чинить первым

Проверка системы сверяет сервер с требованиями платформы и называет расхождения прямо. Проходим её после установки, после каждого обновления окружения и перед разбором непонятного сбоя.

Решение

Где запускается проверка

Открываем страницу проверки в админке:

Настройки > Инструменты > Проверка системы
/bitrix/admin/site_checker.php # прямой адрес страницы

Страница работает внутри уже установленного сайта и видит его настройки, базу и права на файлы. До установки продукта её ещё нет, и сервер проверяют отдельным скриптом.

Проверка до установки

Кладём в корень сайта скрипт требований:

Окно терминала
cd /home/bitrix/www
wget https://dev.1c-bitrix.ru/download/scripts/bitrix_server_test.php
chown bitrix:bitrix bitrix_server_test.php # владелец = пользователь веб-сервера

Скрипт сверяет только серверную часть: версии PHP и базы, расширения, значения php.ini. В BitrixVM мастер установки шаги «проверка системы» и «параметры БД» пропускает, потому что окружение уже собрано под требования.

Что она смотрит

Настройки PHP, из-за которых проверка краснеет чаще всего:

memory_limit = 256M
max_input_vars = 10000
max_execution_time = 300
default_charset = UTF-8
pcre.backtrack_limit = 1000000
mbstring.func_overload = 0 ; параметр должен быть удалён или обнулён
short_open_tag = On
opcache.max_accelerated_files = 100000

Кроме настроек проверка смотрит обязательные расширения (GD с FreeType, XML/DOM, mbstring, Zlib, ZIP, OpenSSL, Hash, PCRE, mysqli), права на файлы, кодировку таблиц базы и отправку почты. Расширения suhosin и mod_security платформой запрещены, и проверка отмечает их отдельным красным пунктом.

Как читать отчёт

Отчёт называет каждый пункт и его состояние:

Версия PHP Ok
Расширения PHP Ok
Кодировки таблиц в БД Fail (check_mysql_table_charset)
Работа с сокетами Fail (check_socket)
Отправка почты больше 64Кб Ошибка! Отправлено. Время отправки: 1.03 сек
Права на файлы и папки Ok

Красное здесь не равно аварии. Версия PHP, кодировка базы и отсутствующее расширение блокируют работу и правятся первыми, а замечания про скорость почты и про сокеты часто оказываются особенностью площадки.

Красные пункты и что менять

Разбираем нехватку расширений и настроек:

Окно терминала
php -m | grep -iE 'gd|mbstring|zip|openssl|mysqli' # чего не хватает
ls /etc/php.d/*.ini.disabled # отключено обновлением VM
mv -f /etc/php.d/zip.ini.disabled /etc/php.d/zip.ini # только переименование
echo 'memory_limit = 256M' >> /etc/php.d/z_bx_custom.ini
mysql -e "SHOW VARIABLES LIKE 'character_set_database'" # ждём utf8mb4
systemctl restart httpd nginx

Свои значения кладём только в z_bx_custom.ini: сгенерированные файлы окружение переписывает при обновлении. Модуль возвращают переименованием, а не копией, иначе следующее обновление PHP отключит его снова.

Повторный прогон и фиксация

Сохраняем отчёт и убираем скрипт из корня:

Окно терминала
curl -s -o /root/server_test_$(date +%F).html http://127.0.0.1/bitrix_server_test.php
rm -f /home/bitrix/www/bitrix_server_test.php # доступен всем, кто знает адрес

Прогоняем проверку заново после каждой правки, а не после всех сразу: так видно, какое изменение закрыло какой пункт. Сохранённый отчёт становится точкой отсчёта, с которой сравнивают результат после следующего обновления окружения.

Когда ругается на настроенное

Проверяем адрес, которым открыта админка:

Окно терминала
curl -sI https://site.ru/bitrix/admin/site_checker.php | head -1
openssl s_client -connect site.ru:443 -servername site.ru </dev/null 2>&1 | grep -i verify

Вход по IP-адресу вместо доменного имени роняет проверку сокетов на несовпадении имени в сертификате. Тот же красный пункт даёт защита периметра, которая режет запросы страницы проверки к собственному сайту.

Типичные проблемы

Отправка письма больше 64 Кб помечена ошибкой, хотя письмо дошло.

Проверка засчитывает как отказ любую отправку дольше одной секунды, даже если письмо доставлено. Внешний почтовый узел отвечает медленнее локального демона, и для BitrixVM это штатная картина.

Кодировки таблиц в БД (check_mysql_table_charset): Fail.

Таблица собрана в чужой кодировке или повреждена внутренней ошибкой MySQL, и проверка её отмечает. Автоматическое исправление пересоздаёт такую таблицу пустой, поэтому копию базы делаем до нажатия кнопки.

Проверка зависает на структуре базы и не идёт дальше.

Проверка структуры базы на большом проекте не укладывается в отведённое настройкой max_execution_time время. Поднимаем лимит до трёхсот секунд в своём файле настроек и прогоняем в спокойные часы.

Ошибки сокетов вылезли после переноса на свой сервер.

Сайт открыт по IP-адресу или локальному имени, а в сертификате прописан рабочий домен. Проверку проходят по тому же публичному адресу, каким сайт открывают обычные посетители снаружи.

После обновления окружения проверка нашла пропавшие расширения.

При обновлении окружения файлы модулей PHP переименовываются в *.ini.disabled, и расширения выпадают из набора. Возвращают расширение обратным переименованием файла и перезапуском веб-сервера, а копирование здесь не годится.

Частые вопросы

Чем bitrix_server_test.php отличается от проверки системы в админке?

Скрипт сверяет только серверную часть и работает без установленного продукта. Проверка системы дополнительно смотрит базу, права на файлы, почту и сокеты самого сайта, поэтому запускать её можно лишь после установки.

Проверка системы зависает, как её всё-таки пройти?

Чаще всего останавливается проверка структуры базы: на большой базе она не укладывается в отведённое время. Поднимаем max_execution_time до 300 секунд в z_bx_custom.ini и запускаем в часы без нагрузки.

При проверке системы выдаёт ошибку отправки почты, что делать?

Сначала смотрим, дошло ли тестовое письмо. Если дошло, а красным помечено время отправки, дело в скорости внешнего почтового узла: порог проверки составляет одну секунду, и медленный ответ она засчитывает как отказ.

После обновления PHP проверка системы показывает ошибку, почему?

Расширения ставятся под конкретную ветку языка и вместе с ней же отключаются. Обновление переименовывает их файлы, и набор модулей под новой веткой отличается от прежнего.

Обязательно ли устранять все замечания перед установкой?

Несовместимости на шаге проверки устраняют до продолжения установки, иначе продукт встанет на заведомо неподходящий сервер. Предупреждения про скорость почты и сокеты установку не блокируют.

Смежное

Первоисточник