在Windows上,DDEV-php在容器中有错误的日期/时间



我使用DDev进行本地开发,并在php认为日期为2.5天前的地方设置了一个站点,例如,当前主机上的时间/日期为:

2020年3月11日下午4:42

但是当我用这个php:检查页面时

<?php
$date = date('F d Y h:i:s');
echo $date;
?>

我看到这个日期:2020年3月9日12:59

如何解决此日期问题?

Edit 2020-03-13:Docker Desktop 2.2.0.4 for Windows声称已经修复了这个错误。

修复了主机从睡眠模式唤醒时容器没有与主机同步时间的问题。修复docker/获胜#4526。

原始响应:

这是在Windows上吗?Docker Desktop for Windows在最近的版本中遇到了问题,尤其是与主机睡眠或休眠有关的问题。解决问题的最佳方法似乎是https://thorsten-hans.com/docker-on-windows-fix-time-synchronization-issue-他建议使用PS脚本(或在Hyper-V管理控制台中手动禁用/启用时间同步(:

# fix-docker-machine-time-sync.ps1
$vm = Get-VM -Name DockerDesktopVM
$feature = "Time Synchronization"
Disable-VMIntegrationService -vm $vm -Name $feature
Enable-VMIntegrationService -vm $vm -Name $feature

但您通常可以:ddev poweroff,然后是ddev start。您也可以ddev poweroff并重新启动docker。

这甚至出现在Docker Desktop for Windows 2.2.0.3的发行说明中。

在某些情况下,当主机进入休眠时,Docker容器不会与主机同步时间

查看这些Docker Desktop for Windows问题:

  • https://github.com/docker/for-win/issues/5593
  • https://github.com/docker/for-win/issues/5803

请注意,Docker已经提供了一个私有边缘版本来测试它,任何读到这篇文章的人都会通过测试它来帮助一切。链接到当前的私有边缘版本。(请记住,从稳定切换到Edge意味着丢失所有Docker容器和卷,这意味着丢失ddev数据库。(

尝试添加date_default_timezone_set

date_default_timezone_set("Asia/Bangkok"); 

更换您的时区

最新更新