最近做了一个支付宝支付的应用,现在还在开发过程中,今天早上起床之后先调试了一下项目,模拟支付了一笔(¥9999.00)
2333支付宝的沙箱环境啦,屌丝程序猿哪来这么多钱……
打开Navicat
查看数据库的时候,意外发现created_at字段的时间不大对啊,少了8小时,显示凌晨4点创建的支付订单。(没错,我睡到12点才起来的)
然后,首先意识到了PHP的时区配置不对,立即打开Wamp环境查看了一下,timezone是。。。Asia/Shanghai。额,这就很不科学了啊
接下来很自然就想到了Laravel的问题,打开Laravel的/app/config/app.php配置文件,发现里面果然有这么一行:
1 2 3 |
<span class="ot">[</span> <span class="st"><span class="hljs-string">'timezone'</span></span> => <span class="st"><span class="hljs-string">'UTC'</span></span><span class="ot">,</span> <span class="ot">]</span> |
哦好吧,果然是这里的问题。
由于我喜欢配置文件集中管理,并且Laravel不是有一个.env
配置文件么,那就好好利用一下吧。
观察配置文件里其他内容发现,有一个env()
函数,猜测这个就是从.env
中获取配置项value的函数了,不管怎么样,先试一下就对了,试试又不会怀孕嘛……
试着对app.php做了如下改动
1 2 3 |
<span class="ot">[</span> <span class="st"><span class="hljs-string">'timezone'</span></span> => env<span class="ot">(</span><span class="st"><span class="hljs-string">'TIMEZONE'</span></span><span class="ot">,</span><span class="st"><span class="hljs-string">'UTC'</span></span><span class="ot">),</span> <span class="ot">]</span> |
在.env
文件中添加一行TIMEZONE=Asia/Shanghai
之后,重新创建了一笔交易,用沙箱支付宝支付了一下,诶,可行 -_-
好了,就是这样,Laravel修改时区的教程到此结束,看我啰嗦了这么多,其实也就那两句。