[Помогите] Проблема с часовым поясом в opencart

Тема в разделе "OpenCart", создана пользователем Zulus, 22 апр 2016.

Метки:
  1. Zulus

    Zulus Команда форума

    Регистрация:
    20 дек 2012
    Сообщения:
    746
    Симпатии:
    722
    Суть проблемы такова, в самом опенкарте временная зона указана РФ/Москва, а сервер находится совсем в другом месте. И получается что если клиент сделал заказ в 10:00, то в админке отображается время заказа 03:00. Как это побороть, подскажите пожалуйста?
    Обратился в службу поддержки хостинга, они что-то изменили и сейчас вроде как время для сайта московское http://joxi.ru/v29l53xuGDNZpm , но все равно в заказах ничего не поменялось.
    Пробовал в файле system/startup.php изменить
    PHP:
    if (!ini_get('date.timezone')) {
       
    date_default_timezone_set('UTC');
    }
    на
    PHP:
    if (!ini_get('date.timezone')) {
        
    date_default_timezone_set('Europe/Moscow');
    }
    так же в файле php.ini (в корне сайта) добавил строчку date.timezone = Europe/Moscow;
    но ничего не помогло :(
     
    skiv14 нравится это.
  2. Bnopen

    Bnopen Команда форума

    Регистрация:
    3 мар 2013
    Сообщения:
    1.264
    Симпатии:
    534
    Zulus, я боролся с таким на впске. Оказалось все было в timezone в бд, менял через phpmyadmin.
    Потом нашел эти модули, которые меняют время пхп и бд, может помогут -
     
    bestleshka, samuel_L, skiv14 и ещё 1-му нравится это.
  3. Zulus

    Zulus Команда форума

    Регистрация:
    20 дек 2012
    Сообщения:
    746
    Симпатии:
    722
    Вопрос решен!
    Установил по рекомендации Bnopen модуль Database and PHP timezone (всего один vqmod файлик) и в настройках магазина, на вкладке "Сервер" появился дополнительное поле с выбором часового пояса
    [​IMG]
    выбрал свою временную зону - Europe/Moscow и все заработало отлично, время заказов в админке соответствует реальному времени заказа клиента!
     
    samuel_L нравится это.
  4. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Проблема должна была быть не только с временем заказов, но везде, где используется SQL NOW(), например, срок действия акций, просто там разница в несколько часов не так заметна.

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

    Путь для версии 1.5: /system/database/
    Путь для версий 2.x: /system/library/db/

    Для mysqli драйвера:
    файл mysqli.php
    в конце метода __construct вписать:
    Для версий 1.5, 2.0, 2.1:
    PHP:
    $this->link->query("SET time_zone = 'Europe/Moscow'");
    Для версии 2.2:
    PHP:
    $this->connection->query("SET time_zone = 'Europe/Moscow'");
    Для mysql драйвера:
    файл mysql.php
    в конце метода __construct вписать:
    Для версий 1.5, 2.0, 2.1:
    PHP:
    mysql_query("SET time_zone = 'Europe/Moscow'"$this->link);
    Для версии 2.2:
    PHP:
    mysql_query("SET time_zone = 'Europe/Moscow'"$this->connection);
     
    bestleshka, samuel_L, Bnopen и 2 другим нравится это.