26 октября был перевод стрелок в России на час назад. Многие системы автоматически обновили timezone. Как пользователь MacOs, iOS8 я с проблемами не столкнулся. Однако проблема осталась в php. Просто скрипт

echo date("Y-m-d H:i:s");

возвращал время на час вперед. Почему так происходит?

В PHP встроена своя собственная база временных зон. Каждая новая версия поставляется со своей базой. Поэтому если вас постигла та же участь с неправильным временем, то ее можно решить, обновившись на новую версию PHP.

Есть еще один вариант, это использовать пакет pecl под названием timezonedb. Ставится он достаточно просто

sudo pecl install timezonedb

Если возникает такая ошибка,

sudo pecl install timezonedb
# downloading timezonedb-2013.7.tgz …
# Starting to download timezonedb-2013.7.tgz (195,474 bytes)
# …………………………………..done: 195,474 bytes
# 5 source files, building
# running: phpize
# grep: /usr/include/php/main/php.h: No such file or directory
# grep: /usr/include/php/Zend/zend_modules.h: No such file or  directory
# grep: /usr/include/php/Zend/zend_extensions.h: No such file  or directory
# Configuring for:
# PHP Api Version:
# Zend Module Api No:
# Zend Extension Api No:
# Cannot find autoconf. Please check your autoconf installation and the
# $PHP_AUTOCONF environment variable. Then, rerun this script.
# ERROR: `phpize' failed

то проверьте, что у вас установлены инструменты для разработчика

xcode-select --install

Появится окно с инструкциями. После этого проверьте autoconf, automake.

brew install autoconf automake

После этого снова запускайте установку timezonedb. Проверяем время в php и радуемся, что все стало хорошо.

Leave a Reply

Leave a Reply

Your email address will not be published. Required fields are marked *