Проблема с часовым поясом PHP 5.2 Windows (стек WAPP) - PullRequest
0 голосов
/ 20 апреля 2009

На сервере Win2k, используя стек WAPP (Windows, Apache, PostgreSQL, PHP). Запуск PHP веб-приложения. Также протестировано с использованием интерактивной консоли PHP.

Дата и время сообщаются правильно, но по какой-то странной причине часовой пояс сообщается неправильно:

php -a
<?php
echo date('c');
2009-04-19T16:52:35-04:00

C:\WAPP\php>time /t
17:06

C:\WAPP\php>date /t
Sun 04/19/2009

Часовой пояс ОС сервера фактически установлен на GMT-5. Я использовал (неофициальное) исправление DST, а также пытался использовать расширение php_timezonedb.dll, но проблема сохраняется.

На этом сервере также запущены другие приложения (не под моим контролем), поэтому я не могу просто изменить время. Я мог бы также временно установить для всех в GMT-4 время в приложении PHP, но я чувствую, что должно быть менее хакерское решение.

Есть ли у кого-нибудь какие-либо предложения или может дать более подробное объяснение того, что происходит? Я подозреваю, что это как-то связано с недавними изменениями в DST и Windows, и это заставляет PHP неправильно определять часовой пояс.

Ответы [ 4 ]

2 голосов
/ 20 апреля 2009

Вы можете избежать многих проблем, связанных с часовым поясом, используя:

gmdate  ( string $format  [, int $timestamp  ] );

Она идентична функции date(), за исключением того, что время возвращается в GMT (время по Гринвичу).

0 голосов
/ 20 апреля 2009

Вы должны установить часовой пояс (либо из PHP.ini, либо с помощью date_default_timezone_set())

Полагаю, если вы включите уведомление о строгой ошибке, вы получите сообщение об ошибке, не указав часовой пояс по умолчанию.

Каждый вызов функции даты / времени будет генерировать E_NOTICE, если часовой пояс недействителен, и / или сообщение E_STRICT, если используются системные настройки или переменная окружения TZ. Смотри также date_default_timezone_set()

0 голосов
/ 20 апреля 2009

Вы можете установить используемый часовой пояс php, установив переменную php date.timezone в .htaccess в каталоге приложения.

php_value date.timezone "America/Bahia"
0 голосов
/ 20 апреля 2009

Если у вас нет доступа к файлу php.ini (вы можете установить там часовой пояс сервера), вам придется установить часовой пояс в скрипте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...