记一次调试经历:timezone

在怀疑程序出问题之前,先怀疑是人为的问题。 现在是北京时间 2017-12-15 下午两点半,同事告诉我她遇到了一个奇葩的 Bug,本地和测试环境配置一样,都是设置成美西时间,但是 PHP 里面输出当前日期的时候,本地环境是 2017-12-14,测试环境是 2017-12-15,简单来说就是:测试环境的时区设置出问题了。 date_default_timezone_set(“America/Los_Angeles”); 第一反应是肯定又是运维配置的问题,但是还是谷歌搜了一下 “date_default_timezone_set() not work”,看到有人说如果 php.ini 里面的 date.timezone 设置要比 date_default_timezone_set() 优先级高,于是尝试了一下使用 ini_set() 来设置时区。 ini_set(“date.timezone”, “America/Los_Angeles”); 还是不行,既然网上找不到正确的解决方法,不妨来看看 PHP 官方文档。date_default_timezone_get() 的文档里面明确说明了 date_default_timezone_set() 的优先级是最高的,然后才是 date.timezone 配置,网上的某些答案真的是误人子弟。 echo date_default_timezone_get(); 既然怀疑时区设置有问题,那么不妨查看一下当前时区,America/Los_Angeles,居然设置成功了!设置成功了!设置成功了!时区设置成功了,但是输出的时间不对,会是哪里的问题呢?百思不得其解,于是我把脑洞开到最大:难道是 timezone database 不对? $timezone =…

 528 total views

Published