Системы FreeBSD и PHP имею свои собственные базы файловых зон, поэтому при изменении в какой-нибудь стране часовых поясов необходимо производить обновление этих баз. Проверить текущую дату и часовой пояс в системе можно командой
date '+%x %X %z %Z'
В PHP проверить текущую временную зону можно командой
php -r 'date_default_timezone_set("Europe/Moscow"); echo "\n".date ("P",1414789200)."\n\n";'
Часовой пояс для системы в целом:
- Проверяем есть ли в существующем файле часового пояса нужные инструкции:
[#]zdump -v /etc/localtime | grep <дата>
- Если нет, то обновляем zoneinfo:
#portsnap fetch update && cd /usr/ports/misc/zoneinfo && make reinstall clean && tzsetup /usr/share/zoneinfo/Europe/Moscow
- Проверяем:
[#]zdump -v /etc/localtime | grep 2014
/etc/localtime Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400
/etc/localtime Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800
*/etc/localtime — должен быть копией либо симлинком на файл вашего часового пояса (/usr/share/zoneinfo/Europe/Moscow).
PHP
В случае незапланированных изменений во времени нашего часового пояса, таковой имел место быть 26 октября 2014 года,например, необходимо обновить базу часовых поясов php.
делается это через менеджер экстеншенов для php.
Если расширение уже установлено, нужно лишь обновить его:
[#] pecl upgrade timezonedb
Если нет, то установить:
[#] pecl install timezonedb && echo «extension=timezonedb.so» >> /usr/local/etc/php/extensions.ini && /usr/local/etc/rc.d/php-fpm restart
*если pecl не установлен, то его можно установить из портов: /usr/ports/devel/pear
Проверяем часовой пояс.
Если PHP работает в качестве модуля Apache, перезагружаем веб-сервер чтобы применить изменения:
service apache22 restart