Справочник

date.timezone: часовой пояс в PHP

PHP не берёт часовой пояс из системы: если date.timezone не задан, он считает время по UTC. В Ubuntu эта строка в php.ini закомментирована. Впишите date.timezone = Europe/Moscow в оба файла php.ini — для сайта и для командной строки.

≈ 4 мин чтения
Содержание 8

Что сделать прямо сейчас

Команды вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

  1. Откройте файл настроек PHP для сайта: sudo nano /etc/php/8.3/fpm/php.ini. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — наберите пароль и нажмите Enter.
  2. Нажмите Ctrl+W, введите date.timezone = и нажмите Enter — курсор встанет на строку с этой настройкой. Если в начале строки стоит точка с запятой, удалите её: такая строка не действует.
  3. Впишите новое значение: date.timezone = Europe/Moscow. Для другого пояса — его имя из списка ниже.
  4. Сохраните файл: Ctrl+O, Enter, затем Ctrl+X.
  5. Перезапустите PHP-FPM: sudo systemctl restart php8.3-fpm. Если команда ничего не ответила, PHP перезапущен.
  6. Проверьте значение: php-fpm8.3 -i | grep date.timezone.

Сделайте то же в файле для команды php в окне SSH и заданий cron: sudo nano /etc/php/8.3/cli/php.ini. Перезапуск для него не нужен. Проверьте:

ivan@myserver:~$ php -r 'echo date_default_timezone_get(), PHP_EOL;'
Europe/Moscow

Команды — для PHP 8.3 из Ubuntu 24.04. В Ubuntu 26.04 стоит PHP 8.5: в путях и командах вместо 8.3 пишите 8.5. Какая версия у вас, покажет ls /etc/php/.

Почему время в PHP не совпадает с сервером

PHP выбирает пояс по порядку:

  1. пояс, заданный в коде функцией date_default_timezone_set();
  2. настройка date.timezone;
  3. если нет ни того, ни другого, — UTC.

Пояс системы, который показывает timedatectl, PHP не учитывает. Поэтому после смены пояса на сервере время в PHP остаётся прежним, пока не задан date.timezone.

Как называется ваш пояс

Пояс пишут как регион и город латиницей: Europe/Moscow, Europe/Kaliningrad, Europe/Samara. Полный список — в справке PHP: выберите часть света и найдите свой город или ближайший в том же поясе.

Invalid date.timezone value

Invalid date.timezone value 'Moscow', using 'UTC' instead

Такое предупреждение PHP выдаёт, если имени пояса нет в списке: например, написано Moscow без Europe/ или с опечаткой. PHP оставляет прежний пояс — тот, что указан в конце сообщения. Впишите имя точно как в списке и перезапустите PHP-FPM.

Пояс только для одного сайта

Только для одного сайта — строкой php_admin_value[date.timezone] = Europe/Moscow в пуле PHP-FPM или строкой date.timezone = Europe/Moscow в файле .user.ini: как это сделать. Можно и в коде сайта — функцией date_default_timezone_set('Europe/Moscow').

WordPress

WordPress при запуске сам ставит для PHP пояс UTC, а свой пояс берёт из настроек сайта. Поэтому date.timezone на время в WordPress не влияет: пояс выбирают в разделе «Настройки → Общие».

Источники

Сверено 14 октября 2026 года.

Что почитать дальше