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