时区问题PHP 5.2 Windows(WAPP堆栈)

时间:2009-04-19 21:02:36

标签: php windows datetime timezone

在Win2k服务器上,使用WAPP堆栈(Windows,Apache,PostgreSQL,PHP)。运行PHP Web应用程序。还使用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扩展,但问题仍然存在。

这个服务器也在运行其他应用程序(不在我的控制之下),所以我不能只改变时间。 我还可以在PHP应用程序中暂时将每个人都设置为GMT-4,但我觉得应该有一个不那么强硬的解决方案。

有没有人有任何建议,或者可以更深入地解释发生了什么?我怀疑它与最近DST和Windows的变化有关,它导致PHP不正确地检测时区。

4 个答案:

答案 0 :(得分:2)

您可以使用以下方法避免许多与时区相关的问题:

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

除了返回的时间是GMT(格林威治标准时间)之外,它与date()函数相同。

答案 1 :(得分:0)

除非您可以访问php.ini文件(您可以在那里设置服务器的时区),否则您必须在脚本中设置时区。

答案 2 :(得分:0)

您可以通过在应用程序目录中的.htaccess中设置php date.timezone变量来设置php正在使用的时区。

php_value date.timezone "America/Bahia"

答案 3 :(得分:0)

您必须设置时区(来自PHP.ini或date_default_timezone_set()

我猜你是否打开严格错误通知,你会收到一个关于不设置默认时区的错误。

  

如果时区无效,则每次调用日期/时间函数都会生成E_NOTICE,如果使用系统设置或TZ环境变量,则会生成E_STRICT消息。另请参阅date_default_timezone_set()