Как обновить 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