Как обновить timezonedb в PHP (обновлять информацию о часовых поясах)?

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

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

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

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

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

Выполнение полного обновления часового пояса (у нас были проблемы с неправильным российским/московским часовым поясом):

#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