Откуда PHP берет свой часовой пояс?

#php #time #timezone

Вопрос:

Мы испытываем некоторые странные несоответствия с функциями времени в приложении PHP, которое у нас есть.

У нас есть некоторый код, который записывает записи в базу данных, и он регистрирует текущую дату и время с помощью:

 $currentDate = Date("Y-m-d");
$currentTime = Date("H:i:s");
 

Если оставить эти элементы в покое, они попадут в базу данных за 4 часа до текущего часового пояса, в котором мы находимся (мы находимся в часовом поясе EST).

Теперь, конечно, это достаточно легко исправить, добавив:

 date_default_timezone_set("America/New_York");
 

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

Итак, мы пытаемся выяснить, откуда PHP может извлекать свой часовой пояс по умолчанию.

Он извлекает его с сервера, на котором находятся файлы?

Он извлекает его из файла php.ini?

Он извлекает его из файла .htaccess?

Или это какая-то комбинация, зависящая от множества факторов?

Кто-нибудь может, пожалуйста, пролить немного света на это?

Комментарии:

1. Сначала он будет извлекаться из php.ini, затем с сервера, если он не определен. Видишь php.net/manual/en/function.date-default-timezone-get.php

2. Вместо того, чтобы путаться с часовым поясом по умолчанию, используйте DateTime и DateTimezone .

3. Когда @aynber говорит «сервер», это все, что определено операционной системой, Windows, Linux, Mac, что угодно.