在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不正确地检测时区。
答案 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()