Когда требуется выполнить синхронизацию с внешним источником данных (например, с 1С), то 1С Битрикс может выдать следующую ошибку: «Время на сервере базы данных отличается от времени на веб-сервере больше, чем на 10 минут». Это означает, что необходимо проверить и настроить правильные временные зоны.
Разберем эту проблему детальнее. Можно выполнить простой фикс (грабли) в виде хука в файле /bitrix/php_interface/after_connect_d7.php
указать принудительно:
$connection->queryExecute("SET LOCAL time_zone='".date('P')."'");
Но мы рекомендуем разобраться детально в причинах проблемы, для этого подключитесь к серверу по SSH и проверьте командой ‘date’ время в операционной системе (здесь и далее мы работаем в CentOS 7.
В консоли мы сначала забекапим временные файлы:
[root@sx ~]# mv /etc/localtime /etc/localtime-backup
потом делаем линк на нужную нам часовую зону:
[root@sx ~]# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
И далее проверяем командой ‘date’ корректность нового времени.
Вот как это выглядит в терминале:
[root@sx ~]# mv /etc/localtime /etc/localtime-backup [root@sx ~]# date Wed Apr 8 17:19:38 UTC 2020 [root@sx ~]# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime [root@sx ~]# date Wed Apr 8 20:19:46 MSK 2020
Далее подключаемся в MySQL / MariaDB и проверяем тайм-зону командой:
select current_timestamp;
В консоли это выглядит так:
[root@sx ~]# mysql Welcome to the MariaDB monitor. Commands end with ; or g. Your MariaDB connection id is 104506 Server version: 5.5.64-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. MariaDB [(none)]> select current_timestamp; +---------------------+ | current_timestamp | +---------------------+ | 2020-04-08 20:24:41 | +---------------------+ 1 row in set (0.00 sec) MariaDB [(none)]>
Если в MySQL / MariaDB неверное время, то выполняем следующее по определению default_time_zone: идем в /etc/my.cnf (CentOS) или /etc/mysql/my.cnf (Ubuntu) и после:
[root@sx ~] sudo /etc/init.d/mysqld restart
Сложные случаи конфликта во времени в SysConfig
Иногда так происходит, что еще одна отсылка ко времени сервера есть в:
/etc/sysconfig/clock
Вы можете поменять тайм-зону через ‘tzselect’, а в SysConfig, например, может быть прописано: ZONE=America/New_York
Это решается достаточно просто:
[root@sx ~]# vim /etc/sysconfig/clock ZONE="Europe/Moscow" UTC=true ARC=false
Временные зоны в PHP
Сейчас переходим к PHP, здесь тоже может быть нюанс, поэтому смотрим: /etc/php.ini
(из него билдится уже /etc/php.d/bitrixenv.ini) в ini-файле корректируем или добавляем:
timezone = Europe/Moscow
После изменений в php.ini нужно рестартнуть Апач:
service httpd restart
Просмотров: 16493
Достаточно часто, при проверке параметров системы, в Битрикс, можно увидеть одну из ошибок: Время на БД и на сервере- Время отличается на 3600 секунд (цифра может быть разная, но чаще всего именно эта). Ошибка возникает, как правило, при установке веб окружения битрикс на VPS/VDS. Все из-за неправильных настроек временной зоны. Расскажу как исправить.
Провести тест, можно из административной панели битрикс, находится по пути: Администрирование-> Настройки-> Инструменты-> Проверка системы.
Так же, данную ошибку можно увидеть в модуле обмена с сайтом на стороне 1С. При попытке обмена вам может выдать ошибку «Авторизация не пройдена«- даже если уверены, что правильно внесли адрес сайта, логин пользователя с правом обмена и его пароль, а проверка подключения все равно не проходит- скорее всего у вас именно эта ошибка времени на БД и на веб сервере.
Есть два способа решения ошибки
Не очень правильный: Открыть на редактирование файл /bitrix/php_interface/after_connect_d7.php и внести в него строчку.
$connection->queryExecute("SET LOCAL time_zone='".date('P')."'");
После этого, чаще всего, ошибка исчезает и даже 1С проходит проверку авторизации. Но редко, бывает, что не срабатывает для 1С (хотя тест на стороне сайта покажет что все нормально). Есть правильный способ
Подключаемся к серверу по SFTP/FTP протоколу, открываем файл по пути /etc/php.ini (да, именно его, а не /etc/php.d/bitrixenv.ini). И вносим строчку
timezone = Europe/Moscow
Перезагружаем Apache командой
service httpd restart
Все, после этого и ошибка пропадет и 1С сконнектится с сайтом.
Дополнено: Смена часового пояса на уровне системы в CentOS
Предыдуший способ менят часовой пояс на уровне php. Можно сделать совсем правильно и гарантировано работоспособно: сменить часовой пояс в самой системе CentOS
Открываем терминал и вводим команды
- mv /etc/localtime /etc/localtime-old — бекапим файл часовых зон
- ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime — делаем ссылку на часовую зону
- date — убеждаемся что время правильное, выдаст текущую дату и время
PS: Само собой, если у вас 1С и сервер с сайтом работают в другом часовом поясе- выставляйте свой вместо Europe/Moscow
Мои видео на Boosty:
Ваш баннер вместо этой рекламы: 15 000 руб/мес. Размещается во всем блоге, форуме, видеоуроках и разделе с макетами.
Проблема решена — помогла техподдержка Битрикса.
Совет был тривиален:
——
тестировании на странице ( Настройки > Инструменты > Проверка системы ) обнаруживаются ошибки:
Обязательные параметры PHP Ошибка! Значение max_input_vars должно быть не ниже 10000. Текущее значение: 1000
Параметры настройки UTF (mbstring и константа BX_UTF) Ошибка! Сайт работает в UTF кодировке, настройки mbstring:
mbstring.func_overload=0
mbstring.internal_encoding=»»
default_charset=»utf-8″
требуется:
mbstring.func_overload=2
mbstring.internal_encoding=»»
default_charset=»utf-8″
Загрузка файла больше 4Мб Ошибка! Не работает
Время на БД и веб-сервере Ошибка! Время отличается на 10800 секунд
——————-
Далее попросил админа поправить ошибки и проблема пропала.
Так что спасибо Техподдержке Битрикс.
—
ПыСы. Оговорюсь, что аналогичный вопрос задавался и сна Клиентском форуме Битрикса. Ответов с реальными советами — ноль.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
- Pick a username
- Email Address
- Password
By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.
Already on GitHub?
Sign in
to your account
Ошибка при синхронизации Битрикс: время на сервере базы данных
Когда требуется выполнить синхронизацию с внешним источником данных (например, с 1С), то 1С Битрикс может выдать следующую ошибку: «Время на сервере базы данных отличается от времени на веб-сервере больше, чем на 10 минут». Это означает, что необходимо проверить и настроить правильные временные зоны.
Разберем эту проблему детальнее. Можно выполнить простой фикс (грабли) в виде хука в файле /bitrix/php_interface/after_connect_d7.php
указать принудительно:
$connection->queryExecute("SET LOCAL time_zone='".date('P')."'");
Но мы рекомендуем разобраться детально в причинах проблемы, для этого подключитесь к серверу по SSH и проверьте командой ‘date’ время в операционной системе (здесь и далее мы работаем в CentOS 7.
В консоли мы сначала забекапим временные файлы:
[root@sx ~]# mv /etc/localtime /etc/localtime-backup
потом делаем линк на нужную нам часовую зону:
[root@sx ~]# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
И далее проверяем командой ‘date’ корректность нового времени.
Вот как это выглядит в терминале:
[root@sx ~]# mv /etc/localtime /etc/localtime-backup [root@sx ~]# date Wed Apr 8 17:19:38 UTC 2020 [root@sx ~]# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime [root@sx ~]# date Wed Apr 8 20:19:46 MSK 2020
Далее подключаемся в MySQL / MariaDB и проверяем тайм-зону командой:
select current_timestamp;
В консоли это выглядит так:
[root@sx ~]# mysql Welcome to the MariaDB monitor. Commands end with ; or g. Your MariaDB connection id is 104506 Server version: 5.5.64-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. MariaDB [(none)]> select current_timestamp; +---------------------+ | current_timestamp | +---------------------+ | 2020-04-08 20:24:41 | +---------------------+ 1 row in set (0.00 sec) MariaDB [(none)]>
Если в MySQL / MariaDB неверное время, то выполняем следующее по определению default_time_zone: идем в /etc/my.cnf (CentOS) или /etc/mysql/my.cnf (Ubuntu) и после:
[root@sx ~] sudo /etc/init.d/mysqld restart
Сложные случаи конфликта во времени в SysConfig
Иногда так происходит, что еще одна отсылка ко времени сервера есть в:
/etc/sysconfig/clock
Вы можете поменять тайм-зону через ‘tzselect’, а в SysConfig, например, может быть прописано: ZONE=America/New_York
Это решается достаточно просто:
[root@sx ~]# vim /etc/sysconfig/clock ZONE="Europe/Moscow" UTC=true ARC=false
Временные зоны в PHP
Сейчас переходим к PHP, здесь тоже может быть нюанс, поэтому смотрим: /etc/php.ini
(из него билдится уже /etc/php.d/bitrixenv.ini) в ini-файле корректируем или добавляем:
timezone = Europe/Moscow
После изменений в php.ini нужно рестартнуть Апач:
service httpd restart