2010-08-25 4 views
7

phpinfo() zeigt an, dass unser System "" Olson "Timezone Database Version 2010.3" verwendet. I denke, das ist jetzt veraltet, kann aber keinen autoritativen Speicherort finden, der das bestätigen kann.Wie aktualisiert man timezonedb in PHP (Aktualisierung der Zeitzoneninfo)?

(a) Kann ich die Zeitzoneninformationen für PHP als Ganzes aktualisieren? (b) Wenn ja, wie aktualisiere ich dies? Ich sah die Anweisungen auf http://www.electrictoolbox.com/correct-php-timezone/, wo es heißt, dass nach dem entsprechenden Modul zu installieren, es sagt, ich habe zu:

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

Haben wir das tun müssen? Sollte PHP nicht automatisch die richtige Datei verwenden?

+1

Ja Sie Erweiterung hinzufügen hat = timezonedb.so in der php.ini, sonst wie php würde wissen, es braucht um diese Erweiterung zu verwenden oder nicht – ursuleacv

+2

'sudo pecl install timezonedb' –

Antwort

4

Soweit ich weiß ist die Timezone DB (TDB) in PHP selbst verteilt. Aus diesem Grund wird die Zeitzonen-DB nach einiger Zeit obsolet und Sie sollten entweder PHP oder TDB aktualisieren, um die Änderungen in TDB zu berücksichtigen.

Es gibt eine PECL-Erweiterung, die neue TDB-Pakete veröffentlicht, die Sie herunterladen und installieren und in Ihren alten PHP-Installationen verwenden können.

Mir ist nicht bekannt, es gibt eine Möglichkeit, TDB direkt in PHP zu aktualisieren. Die PECL-Erweiterung wurde erstellt, um dieses Problem zu beheben.

+0

Hallo DWICH - zeigen Sie an, dass, wenn wir PHP selbst aktualisieren, sollte das auch funktionieren? Ich hätte gedacht, PHP-Updates sind selten und weit dazwischen ... – tzmatt7447

+0

Was PECL angeht - ich bin nicht vertraut mit dem Konzept - ist das jetzt ein integrierter Bestandteil von PHP? – tzmatt7447

+1

10 @ tzmatt7447: Wenn Sie PHP aktualisieren, könnte es eine neuere Version von TDB enthalten, aber Sie können nicht sicher sein, dass es die neueste ist. Es kann auch neue Releases von TDB zwischen regulären Releases von PHP geben, also wieder - Sie können nicht sicher sein, wenn Sie PHP aktualisieren, erhalten Sie das neueste TDB und - PHP wird nicht veröffentlicht, nur weil TDB aktualisiert wurde. – dwich

2

Es ist besser, nur Ihre PHP-Version zu aktualisieren (speziell, wenn Sie es auf einem Windows-Rechner aktualisieren möchten, andernfalls müssen Sie die Erweiterung selbst kompilieren), denn soweit ich mich erinnere, ist die Erweiterung nicht Windows- Ready only unix/linux - wenn Sie es unter Windows machen wollen, müssen Sie es selbst mit dem VC6 ODER VC9 Compiler kompilieren.

Also, wenn Sie Ihre PHP-Version, die wäre die schnellste Lösung (es war für mich) aktualisieren könnte natürlich PHP nicht die neueste Zeitzone db info, aber ich musste ein Problem mit der Zeitzone db und es zu lösen wurde in der späteren Version von PHP behoben, die ich hatte. Wenn Sie es für Unix/Linux tun, könnten Sie auch die PECL-Erweiterung ausprobieren, ich denke, das könnte einfacher für Sie dann & sein.

+3

Seit der Version 2014.10 kann die Erweiterung als DLL für Windows heruntergeladen werden, siehe https://pecl.php.net/package/timezonedb – ursuleacv

2

Die PECL-Erweiterung ist buchstäblich die Zeitzone DB. Jedes Mal, wenn eine neue Version der DB von here freigegeben wird, wird die Erweiterung mit der aktualisierten Zeitzone DB neu kompiliert.

Sie würden also die alte Erweiterung mit neu kompilierter Version überschreiben und Ihren Webserver neu starten; Angenommen, PHP wird als Modul verwendet.

0

eine komplette Zeitzone Update zu tun (Wir hatten Probleme mit falschem Russland/Moskau Zeitzone):

#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 
Verwandte Themen