2013-05-12 46 views
6

假设验证码:date_default_timezone_set和日期可能的PHP错误?

<?php 
date_default_timezone_set('UTC'); 
$time = gmmktime(14, 50, 0, 5, 12, 2013); 
echo date('Y-m-d H:i:s O', $time).'<br />'; 
echo gmdate('Y-m-d H:i:s O', $time).'<br />'; 

date_default_timezone_set('GMT'); 
$time = gmmktime(14, 50, 0, 5, 12, 2013); 
echo date('Y-m-d H:i:s O', $time).'<br />'; 
echo gmdate('Y-m-d H:i:s O', $time); 
?> 

在我的本地服务器我得到的输出:

2013-05-12 14:50:00 +0000 
2013-05-12 14:50:00 +0000 
2013-05-12 14:50:00 +0000 
2013-05-12 14:50:00 +0000 

但在生产同样的代码产生:

2013-05-12 10:50:00 -0400 
2013-05-12 14:50:00 +0000 
2013-05-12 14:50:00 +0000 
2013-05-12 14:50:00 +0000 

改变机器没有按时间不会以任何方式影响输出。

一些信息:

$ date +%Z 
GMT 
$ date +%z 
+0000 
  • PHP 5.3.25(CLI)(内置:5月11日2013九时54分00秒)
  • CentOS版本5.9(最终)
+1

任何PHP您的服务器日志中的通知或警告? – Jocelyn 2013-05-12 15:12:53

+1

@Jocelyn他没有遇到任何错误或警告,它是'-0400'什么变化 – 2013-05-12 15:13:31

+0

@先生我已经阅读了这个问题。您无法知道错误日志中是否有某些内容。 – Jocelyn 2013-05-12 15:15:05

回答

1

phpinfo()函数呈 “奥尔森” 时区数据库版本作为0.system,所以就用该命令

pecl upgrade timezonedb 

并加入

extension=timezonedb.so 

为php.ini

重新启动服务器后,问题已解决与新的时区数据库版本2013.3

0

可能与代码无关。

如果“O”与格林尼治时间(GMT)的差异以小时为单位..也许在生产计算机中设置时间i不是正确设置..