2013-05-12 15 views
6

Załóżmy ten kod:Możliwy błąd PHP z date_default_timezone_set i datą?

<?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); 
?> 

Na moim lokalnym serwerem otrzymuję komunikat:

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 

Ale na produkcji ten sam kod produkuje:

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 

Zmiana czasu maszynie nie robi w żaden sposób nie wpływają na wynik.

Niektóre info:

$ date +%Z 
GMT 
$ date +%z 
+0000 
  • PHP 5.3.25 (CLI) (powierzchnia: 11 maja 2013 09:54:00)
  • CentOS zwolnić 5,9 (Final)
+1

Dowolny PHP uwagi lub ostrzeżenia w dziennikach serwera? – Jocelyn

+1

@Jocelyn On nie napotyka żadnych błędów ani ostrzeżeń, to '-0400' co zmienia –

+0

@ Mr.Alien Czytałem już pytanie. Nie możesz się dowiedzieć, czy jest coś w dzienniku błędów, czy nie. – Jocelyn

Odpowiedz

1

phpinfo() wykazały "Olson" czasową bazy wersji, jak 0.system, więc użyto polecenia

pecl upgrade timezonedb 

i dodano

extension=timezonedb.so 

do php.ini

Po ponownym uruchomieniu serwera problem został rozwiązany dzięki nowej wersji DB strefy czasowej 2013.3

0

Być może nie chodzi o kod ...

Jeśli "O" to różnica czasu Greenwich (GMT) w godzinach .. może ustawienie czasu w komputerze produkcyjnym nie jest prawidłowo ustawiona ..

Powiązane problemy