Как обновить timezonedb в PHP (обновление информации о часовых поясах)? - PullRequest
8 голосов
/ 25 августа 2010

phpinfo () показывает, что наша система использует базу данных часовых поясов Олсона, версия 2010.3. Я думаю , что сейчас устарело, но не могу найти официальное местоположение, которое может это подтвердить.

(a) Могу ли я обновить информацию о часовых поясах для PHP в целом? (б) Если да, то как мне это обновить? Я видел инструкции в http://www.electrictoolbox.com/correct-php-timezone/, где говорится, что после установки соответствующего модуля мне нужно:

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

Нам нужно это сделать? Разве PHP не должен автоматически использовать правильный файл?

Ответы [ 4 ]

4 голосов
/ 25 августа 2010

Насколько я знаю, БД часового пояса (TDB) распространяется внутри самого PHP. Из-за этого DB часового пояса устареет через некоторое время, и вам следует либо обновить PHP, либо TDB для отражения изменений в TDB.

Существует расширение PECL, которое выпускает новые пакеты TDB, которые вы можете загрузить, установить и использовать в своих старых установках PHP.

Я не знаю, есть ли способ обновить TDB напрямую в PHP. Расширение PECL было создано для решения этой проблемы.

2 голосов
/ 07 января 2015

Расширение PECL - это буквально DB часового пояса. Каждый раз, когда из здесь выпускается новая версия БД, расширение перекомпилируется с обновленной БД часового пояса.

Таким образом, вы фактически перезапишите старое расширение заново перекомпилированной версией и перезапустите свой веб-сервер; при условии, что PHP используется как модуль.

2 голосов
/ 29 апреля 2011

Лучше просто обновить версию PHP (особенно, если вы хотите обновить ее на компьютере с Windows, в противном случае вам нужно скомпилировать расширение самостоятельно), потому что, насколько я помню, расширение не готово для Windows только unix / linux - поэтому, если вы хотите сделать это в Windows, вам придется скомпилировать его самостоятельно, используя компилятор VC6 OR VC9).

Итак, если вы можете обновить свою версию PHP, которая будет самым быстрым решением (это было по крайней мере для меня), конечно, PHP может не иметь последней информации о базе данных о часовом поясе, но мне пришлось решить проблему с базой данных о часовом поясе, и это было исправлено в более поздней версии PHP, которая у меня была. Если вы делаете это для Unix / Linux, вы также можете попробовать расширение PECL, которое, я думаю, может быть проще и быстрее для вас.

0 голосов
/ 05 октября 2017

Чтобы выполнить полное обновление часового пояса (у нас были проблемы с неправильным часовым поясом Россия / Москва):

#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
...