@Reskiner07

Почему php игнорирует один часовой пояс?

Есть ПО Userside, установленное на сервер ubuntu 16.04.
Появилась ошибка:
ВНИМАНИЕ
Системное время (14.01.2021 12:35:21)
несоответствует времени SQL (14.01.2021 11:35:21)


В вики у них описано, что надо поменять в загруженном php.ini таймзону.

Решение от userside

Если системное время PHP (cli) отличается от времени базы данных

Для PHP возможна ситуация, когда используются различные файлы php.ini в работе. Для php-web (через него работает веб-интерфейс ERP "UserSide") свой, а для php-cli (через него работает, к примеру запуск скриптов через cron, в т.ч. планировщик ERP "UserSide") свой. Зачастую используется один файл, но иногда - нет и тогда настройки в них могут очень различаться. В т.ч. может отличаться часовой пояс, что приводит к неправильным обработкам дат и к сообщениям о различиях во времени.

Как посмотреть какой файл php.ini использует php-web:

Настройка - Основная - Разное - Показать PHPinfo()
В строке "Loaded Configuration File" будет путь к файлу.

Как посмотреть какой файл php.ini использует php-cli: В директории "userside" нужно создать, например файл test.php с текстом внутри:

<?php
phpinfo();

После чего через консоль сервера зайти в этот каталог и выполнить команду

php test.php > result.htm
Сформируется файл result.htm с выводом информации PHPinfo. В этом файле также смотрим путь "Loaded Configuration File", находим этот файл и корректируем настройки времени.

При следующем запуске планировщика ERP "UserSide" время будет перепроверено и, если всё совпадает, ошибка исчезнет.


Нахожу загруженный php.ini

Развернуть
Configuration File (php.ini) Path /etc/php/7.0/fpm
Loaded Configuration File /etc/php/7.0/fpm/php.ini
Scan this dir for additional .ini files /etc/php/7.0/fpm/conf.d
Additional .ini files parsed /etc/php/7.0/fpm/conf.d/10-mysqlnd.ini, /etc/php/7.0/fpm/conf.d/10-opcache.ini, /etc/php/7.0/fpm/conf.d/10-pdo.ini, /etc/php/7.0/fpm/conf.d/15-xml.ini, /etc/php/7.0/fpm/conf.d/20-bcmath.ini, /etc/php/7.0/fpm/conf.d/20-calendar.ini, /etc/php/7.0/fpm/conf.d/20-ctype.ini, /etc/php/7.0/fpm/conf.d/20-curl.ini, /etc/php/7.0/fpm/conf.d/20-dom.ini, /etc/php/7.0/fpm/conf.d/20-exif.ini, /etc/php/7.0/fpm/conf.d/20-fileinfo.ini, /etc/php/7.0/fpm/conf.d/20-ftp.ini, /etc/php/7.0/fpm/conf.d/20-gd.ini, /etc/php/7.0/fpm/conf.d/20-gettext.ini, /etc/php/7.0/fpm/conf.d/20-iconv.ini, /etc/php/7.0/fpm/conf.d/20-json.ini, /etc/php/7.0/fpm/conf.d/20-mbstring.ini, /etc/php/7.0/fpm/conf.d/20-mysqli.ini, /etc/php/7.0/fpm/conf.d/20-pdo_mysql.ini, /etc/php/7.0/fpm/conf.d/20-phar.ini, /etc/php/7.0/fpm/conf.d/20-posix.ini, /etc/php/7.0/fpm/conf.d/20-readline.ini, /etc/php/7.0/fpm/conf.d/20-shmop.ini, /etc/php/7.0/fpm/conf.d/20-simplexml.ini, /etc/php/7.0/fpm/conf.d/20-snmp.ini, /etc/php/7.0/fpm/conf.d/20-sockets.ini, /etc/php/7.0/fpm/conf.d/20-sysvmsg.ini, /etc/php/7.0/fpm/conf.d/20-sysvsem.ini, /etc/php/7.0/fpm/conf.d/20-sysvshm.ini, /etc/php/7.0/fpm/conf.d/20-tokenizer.ini, /etc/php/7.0/fpm/conf.d/20-wddx.ini, /etc/php/7.0/fpm/conf.d/20-xmlreader.ini, /etc/php/7.0/fpm/conf.d/20-xmlrpc.ini, /etc/php/7.0/fpm/conf.d/20-xmlwriter.ini, /etc/php/7.0/fpm/conf.d/20-xsl.ini, /etc/php/7.0/fpm/conf.d/20-zip.ini


Иду по пути. Во всей директории на каждом файле ставлю timezone Asia/Vladivostok (он и так почти везде стоял, в некоторых местах просто не было указано ничего).
Перезапускаю php (да и сам сервер уже перезагружал).

Проверяю время на сервере:
root@dns:~# timedatectl
Развернуть
Local time: Thu 2021-01-14 11:47:26 +10
  Universal time: Thu 2021-01-14 01:47:26 UTC
        RTC time: Thu 2021-01-14 01:47:26
       Time zone: Asia/Vladivostok (+10, +1000)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no

В info.php так же Australia/Melbourne.
Пробую
sudo timedatectl set-timezone Asia/Vladivostok

Через tzselect настраиваю, перебираю любые вообще названия часовых поясов +10.
Пробовал и Etc/GMT-10.
Ничего не изменяется, остается Australia/Melbourne.

Но при этом, как только я пытаюсь поставить любую таймзону не +10. (+9 иркутск, токио, что угодно), то она прекрасно меняется в info.php. И системное время в ошибке отображается уже с отставанием. Любые UTC ставятся, но только не та, которая мне нужна.

Простите
Господа, я совсем не разбираюсь в линуксах, так что возможно просто "Ну ты тууупооой". Саппорт самого Userside либо не понимает мою проблему, либо просто не знает как решить.
  • Вопрос задан
  • 212 просмотров
Пригласить эксперта
Ответы на вопрос 2
@402d
начинал с бейсика на УКНЦ в 1988
Неужели старая болячка из за не обновлений сервера. Уже все забыли.
гуглим "php проблемы с отменой зимнего времени"
Ответ написан
@Reskiner07 Автор вопроса
В общем, после очередного онанизма с таймзонами помогло указать Pacific/Guam. Только она сработала из +10 зон.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект