为何我的date(“Y/m/d H:i:s”)相差了7个小时?
环境:MacOS X EI Capitan / PHP5.6.25
今天在校验Crontab的计划执行时,利用PHP输出执行时间却发现输出的时间和当地事件相差了7个小时,对!是7不是8,并不是默认的UTC,呵呵了~
好吧,一贯思路,我去把php.ini中的date.timezone修改成PRC。嗯,肯定正常了吧。
要能正常我也不会写本文了^_~!
不论是修改成PRC还是Asia/Shanghai又或者UTC,全都未然。
- apache输出phpinfo(),查看date区域它的Default Timezone还是没变。

- 在控制台查看
php -i | grep zone也还是同样没变
- 核对加载的php.ini文件是否正确并且配置信息格式是否正确


- 控制台使用
php -a交互模式,调用ini_get('date.timezone'),检查配置的INI是否生效
全都没有任何问题啊!!!为什么结果却出乎意料呢??百度,谷歌我都问遍了,大家没人出现我这样的情况啊。正当我发愁的时候,小伙伴过来给我支招了。
他说:配置文件改好了吗?服务器重启了吗?修改的配置文件的路径是正确的吗?
我说:Yes,对呀,没问题,好奇怪啊!(正在期待他给出我没想到的情况),突然他说,你看看是不是其他地方也设置了这个值。
我一脸肯定地告诉他其他的INI都是扩展配置(其实内心并不是很确定),虽然扩展配置的INI文件特别多,一个一个查特别麻烦,但为了解决问题不能放过任何一个可能性啊。
打住,我可没有一个一个文件的去查!一条命令拯救了我:find /usr/local/php5/ -name "*.ini" -print | xargs grep "Europe",解释:在PHP5根目录中查找所有的INI文件,并输出文件内容包含’Europe’的文件名+所在行。
那啥不负有心人啊,看结果看结果!!
果然这不是一个扩展配置INI,屏蔽掉它的配置!
验证通过!!!原来就是这个文件搞的鬼。这个文件是为MacOS适配PHP5的作者弄的,并非扩展配置。或许我没仔细看他的说明吧,怪我咯。哈哈哈~