в оболочке, время моего сервера (простая дата
в bash):
Вс 29 августа 10:37:12 EDT 2010
, когда я запускаю код php -r "echo date ('Ymd H: i: s');"
я получаю: 2010-08-29 10:37:10
, но когда я выполняю php-скрипт с датой эха ('Ymd H: i: s');
, я получаю другое время - поскольку php считает, что часовой пояс - UTC ( время сервера - EDT).
В моем файле php.ini не установлен часовой пояс, и я не хотел бы ничего менять, так как не знаю, какое влияние это окажет на другие сайты, работающие на этом сервере.
Является есть простой способ получить время сервера в часовом поясе, который установлен для сервера?
Согласно справочной странице php.ini directives, часовой пояс не устанавливается по умолчанию, если вы используете версию до 5.3. Затем, если вы посмотрите на страницу для date_default_timezone_get
, она использует следующий порядок для получения часового пояса:
* Reading the timezone set using the date_default_timezone_set() function (if any)
* Reading the TZ environment variable (if non empty) (Prior to PHP 5.3.0)
* Reading the value of the date.timezone ini option (if set)
* Querying the host operating system (if supported and allowed by the OS)
UTC является значением по умолчанию, если все это терпит неудачу, так что это, вероятно, хорошая отправная точка.
Сервер должен всегда иметь часовой пояс, указанный в файле php.ini
. PHP 5.3 даже выдает уведомления, если это не так, и расширение DateTime
будет генерировать исключения, если вы попытаетесь построить объекты без явного указания часового пояса (с объектом DateTimezone
) или имея значение по умолчанию один (либо через date.timezone
, либо date_default_timezone_set
).
Согласно тому, что вы описываете, наиболее вероятными сценариями являются:
date_default_timezone_set('UTC')
или аналогичный. Вы пробовали использовать date_default_timezone_set()? Американские часовые пояса можно найти здесь http://www.php.net/manual/en/timezones.america.php