phpinfo () показывает, что наша система использует «Olson» Timezone Database Version 2010.3 ». Я думаю, что это сейчас устарело, но не может найти авторитетное место, которое может подтвердить это.
(a) Могу ли я обновить информацию о часовых поясах для PHP в целом? (б) Если да, то как мне это обновить? Я видел инструкции на http://www.electrictoolbox.com/correct-php-timezone/, где говорится, что после установки соответствующего модуля он говорит, что мне нужно:
You should add "extension=timezonedb.so" to php.ini
Нужно ли нам это делать? Не следует ли PHP автоматически использовать правильный файл?
насколько я знаю, временная БД (TDB) распространяется внутри самого PHP. Из-за этого временная БД становится устаревшей через некоторое время, и вы должны либо обновить PHP, либо TDB, чтобы отразить изменения в TDB.
Существует расширение PECL, которое выпускает новые пакеты TDB, которые вы можете скачать и установить и использовать в старых установках PHP.
Я не знаю, есть ли способ обновить TDB непосредственно на PHP. Расширение PECL было создано для решения этой проблемы.
Лучше просто обновить вашу версию PHP (особенно, если вы хотите обновить ее на компьютере с Windows, иначе вам придется скомпилировать расширение самостоятельно), поскольку, насколько я помню, расширение не является готовым только для Windows. Unix / linux – поэтому, если вы хотите сделать это на окнах, вам придется скомпилировать его самостоятельно, используя компилятор VC6 OR VC9).
Итак, если вы можете обновить свою версию PHP, которая будет самым быстрым решением (это было для меня по крайней мере для меня), конечно, у PHP может не быть последней информации о времени в часовом поясе, но мне пришлось решить проблему с часовым поясом db, и она была исправлена в более поздняя версия PHP, которая у меня была. Если вы делаете это для unix / linux, вы также можете попробовать расширение PECL, я думаю, что для вас это может быть проще и быстрее.
Расширение PECL буквально является временной шкалой времени. Каждый раз, когда новая версия БД освобождается отсюда , расширение перекомпилируется с обновленным БД временной зоны.
Таким образом, вы фактически перезапишете старое расширение с помощью новой перекомпилированной версии и перезапустите веб-сервер; предполагая, что PHP используется в качестве модуля.
Сделать полное обновление часового пояса (у нас были проблемы с неправильным российским / московским часовым поясом):
#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