Cakephp 马里亚布时区错了
Cakephp 马里亚布时区错了,cakephp,centos,timezone,mariadb,Cakephp,Centos,Timezone,Mariadb,显示全局变量,如“时区”返回: Variable_name | Value time_zone SYSTEM Local time: Fr 2020-09-25 20:24:14 CEST Universal time: Fr 2020-09-25 18:24:14 UTC RTC time: n/a Time zone: Host (CEST, +0200) 在Centos 7服务器上timedatectl返回: Variable_
显示全局变量,如“时区”
返回:
Variable_name | Value
time_zone SYSTEM
Local time: Fr 2020-09-25 20:24:14 CEST
Universal time: Fr 2020-09-25 18:24:14 UTC
RTC time: n/a
Time zone: Host (CEST, +0200)
在Centos 7服务器上timedatectl
返回:
Variable_name | Value
time_zone SYSTEM
Local time: Fr 2020-09-25 20:24:14 CEST
Universal time: Fr 2020-09-25 18:24:14 UTC
RTC time: n/a
Time zone: Host (CEST, +0200)
将新行插入具有DATETIME
类型和默认值current\u timestamp()
的表中,此字段具有UTC时间[在本例中为2020-09-25 18:24:14,而不是2020-09-25 20:24:14]
我的问题:
我做错了什么?我知道如何设置时区,但是系统
值应该可以,因为Centos 7服务器设置了正确的时区
更新
(一)
回答评论时,选择@GLOBAL.time_zone、@SESSION.time_zone代码>返回第一个系统和第二个'+00:00'。我正在Plesk环境中的PHP下运行它
(二)
开始时,表中没有此DATETIME字段。当我将其与PMA一起添加时,插入的日期时间[因为该字段被定义为notnull
]是正确的!只有当我运行INSERT
语句时,它才会插入UTC时间。多亏了,我才能找到问题。他的问题是什么SELECT@@GLOBAL.time_zone,@@SESSION.time_zone代码>返回让我走上正确的方向
首先,我在PMA中运行命令,该命令为系统
返回。在PMA中插入行生成正确的时间。这只是我在CakePHP下运行的PHP脚本中的错误,然后我检查了app_local.PHP
中的设置,确实有UTC
作为时区。将时区
更改为系统
修复了它
我该怎么说呢,MariaDB工作正常,由于我遇到这个问题时使用了默认的CakePHPtimezone
设置。现在我在问题中添加了cakephp
标记,因为这是问题的原因。多亏了,我可以找到问题。他的问题是什么SELECT@@GLOBAL.time_zone,@@SESSION.time_zone代码>返回让我走上正确的方向
首先,我在PMA中运行命令,该命令为系统
返回。在PMA中插入行生成正确的时间。这只是我在CakePHP下运行的PHP脚本中的错误,然后我检查了app_local.PHP
中的设置,确实有UTC
作为时区。将时区
更改为系统
修复了它
我该怎么说呢,MariaDB工作正常,由于我遇到这个问题时使用了默认的CakePHPtimezone
设置。我现在还添加了cakephp
标记,因为这是问题的原因。使用SELECT@@global.time_zone,@@session.time_zone
?我认为问题是由于mysql
数据库中缺少时区数据造成的。看见用SELECT*FROM mysql.time\u zone检查是否有时区数据
@danilavershin是的,表是空的,但我真的不相信这是原因。系统
返回正确的时间,不需要修改它。检查我的问题,我添加了第二次更新。@Danilavershin在PHP会话+00:00
的第一次注释返回中选择,这正是问题所在。我必须弄清楚如何在PHP会话中更改它。实际上,我会将服务器时区设置为UTC。从长远来看,这可以避免很多头痛。大多数PHP框架(就像您的cakephp一样)都是时区感知的。因此,在大多数情况下,“服务器时区=UTC”+“应用程序时区=您想要的”,将产生正确的结果
?我认为问题是由于mysql
数据库中缺少时区数据造成的。看见用SELECT*FROM mysql.time\u zone检查是否有时区数据
@danilavershin是的,表是空的,但我真的不相信这是原因。系统
返回正确的时间,不需要修改它。检查我的问题,我添加了第二次更新。@Danilavershin在PHP会话+00:00
的第一次注释返回中选择,这正是问题所在。我必须弄清楚如何在PHP会话中更改它。实际上,我会将服务器时区设置为UTC。从长远来看,这可以避免很多头痛。大多数PHP框架(就像您的cakephp一样)都是时区感知的。因此,在大多数情况下,“服务器时区=UTC”+“应用程序时区=您想要的”,将产生适当的结果。