You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DDEV中使用Europe/Kyiv时区?解决Drupal 10时区报错

解决DDEV+Drupal 10中Europe/Kyiv时区无效的问题

临时快速修复(兼容新旧时区)

  • 在Drupal的settings.php中添加兼容逻辑,自动处理时区标识切换:
// 处理时区拼写变更兼容
$target_timezone = 'Europe/Kyiv';
if (!@date_default_timezone_set($target_timezone)) {
  date_default_timezone_set('Europe/Kiev');
}
  • 或者直接暂时换回旧时区标识,执行命令:
ddev config --timezone=Europe/Kiev

永久修复:更新DDEV容器内的tzdata

  • 先进入DDEV容器:
ddev ssh
  • 根据容器基础系统更新tzdata包:
    • Debian/Ubuntu系镜像:
    sudo apt update && sudo apt install --only-upgrade tzdata
    
    • Alpine系镜像:
    sudo apk update && sudo apk upgrade tzdata
    
  • 退出容器后重新设置时区并重启:
ddev config --timezone=Europe/Kyiv
ddev restart

长期预防:自定义DDEV镜像(避免重复更新)

  • 在项目根目录创建.ddev/web-build/Dockerfile,加入tzdata更新步骤:
ARG BASE_IMAGE
FROM $BASE_IMAGE

# 针对Debian/Ubuntu镜像更新tzdata
RUN apt-get update && apt-get install --only-upgrade -y tzdata && rm -rf /var/lib/apt/lists/*

# 如果是Alpine镜像,替换为下面这行:
# RUN apk update && apk upgrade tzdata && rm -rf /var/cache/apk/*
  • 执行ddev restart,DDEV会自动构建包含最新tzdata的自定义镜像

问题根源

tzdata(时区数据库)在2022年的更新中,将乌克兰基辅的时区标识从Europe/Kiev改为Europe/Kyiv以匹配官方拼写。若你的DDEV基础镜像未同步更新tzdata包,系统无法识别新标识,就会抛出无效时区的报错。

内容的提问来源于stack exchange,提问作者Vadym Tseiko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 06:02:10