2010-08-25 10 views
7

phpinfo() pokazuje, że nasz system ma używać "" Olson "Baza danych strefy czasowej w wersji 2010.3". I Myślę, że, który jest obecnie nieaktualny, ale nie może zlokalizować autorytatywnej lokalizacji, która może to potwierdzić.Jak zaktualizować timezonedb w PHP (aktualizowanie informacji o strefach czasowych)?

(a) Czy mogę zaktualizować informacje o strefie czasowej dla PHP jako całości? (b) Jeśli tak, jak mogę to zaktualizować? Widziałem z instrukcjami na http://www.electrictoolbox.com/correct-php-timezone/ gdzie jest napisane, że po zainstalowaniu odpowiedniego modułu, to mówi, że mam do:

You should add "extension=timezonedb.so" to php.ini 

Czy musimy to robić? Czy PHP nie powinien automatycznie używać poprawnego pliku?

+1

Tak trzeba dodać extension = timezonedb.so w php.ini, inaczej jak php wiedziałby potrzebuje używać tego rozszerzenia lub nie – ursuleacv

+2

'sudo pecl install timezonedb' –

Odpowiedz

4

o ile mi wiadomo, że Timezone DB (TDB) jest rozprowadzany w samym PHP. Z tego powodu, strefa czasowa DB staje się przestarzała po pewnym czasie i powinieneś zaktualizować PHP lub TDB, aby odzwierciedlić zmiany w TDB.

Istnieje rozszerzenie PECL, które wydaje nowe pakiety TDB, które można pobrać i zainstalować i używać ich w starych instalacjach PHP.

Nie jestem świadomy, że istnieje sposób aktualizacji TDB bezpośrednio w PHP. Rozszerzenie PECL zostało utworzone w celu rozwiązania tego problemu.

+0

Hi dwich - czy wskazujesz, że jeśli zaktualizujemy sam PHP, który również powinien działać? Wydaje mi się, że aktualizacje PHP są nieliczne i dalekie od ... – tzmatt7447

+0

Co do PECL - nie jestem zbyt zaznajomiony z koncepcją - czy jest to standardowa wbudowana część PHP teraz? – tzmatt7447

+1

@ tzmatt7447: Jeśli zaktualizujesz PHP, może on zawierać nowszą wersję TDB, ale nie możesz być pewien, że jest najnowszy. Równie dobrze mogą pojawiać się nowe wydania TDB między regularnymi wydaniami PHP - nie możesz być pewien, że jeśli zaktualizujesz PHP, otrzymasz najnowsze TDB i - PHP nie zostanie wydane tylko dlatego, że TDB zostało zaktualizowane. – dwich

2

Lepiej tylko zaktualizować wersję PHP (specjalnie, jeśli chcesz ją zaktualizować na komputerze z systemem Windows, w przeciwnym razie musisz samemu skompilować rozszerzenie), ponieważ o ile pamiętam, rozszerzenie nie dotyczy Windowsa. Ready only unix/linux - więc jeśli chcesz to zrobić w oknach, będziesz musiał skompilować go sam, używając kompilatora VC6 LUB VC9).

Tak więc, jeśli możesz zaktualizować wersję PHP, która byłaby najszybszym rozwiązaniem (przynajmniej dla mnie), oczywiście PHP może nie mieć najnowszego timezone db info ale musiałem rozwiązać problem z db strefy czasowej i to został naprawiony w późniejszej wersji PHP, którą miałem. Jeśli robisz to dla systemu Unix/Linux, równie dobrze możesz wypróbować rozszerzenie PECL, które może być łatwiejsze wtedy.

+3

Od wersji 2014.10 rozszerzenie można pobrać jako plik dll dla systemu Windows, patrz https://pecl.php.net/package/timezonedb – ursuleacv

2

Rozszerzenie PECL jest dosłownie DB strefy czasowej. Za każdym razem, gdy nowa wersja DB jest wydana z here, rozszerzenie jest rekompilowane ze zaktualizowanym DB strefy czasowej.

Tak więc, faktycznie zastąpiłbyś stare rozszerzenie nowo skompilowaną wersją i zrestartujesz serwer sieciowy; zakładając, że PHP jest używane jako moduł.

0

Aby wykonać pełną aktualizację strefy czasowej (mieliśmy problemy z nieprawidłowym Rosja/czas moskiewski):

#for OS - CentOS and MySQL 
yum update tzdata 
mysql_tzinfo_to_sql /usr/share/zoneinfo 
#for PHP 
pecl upgrade timezonedb 
pecl upgrade intl 

#dependencies you may need for the above: 
yum install gcc 
yum install gcc-c++ 
yum install libicu-devel 
Powiązane problemy