Php Mysql数据库未更新到指定的时区

Php Mysql数据库未更新到指定的时区,php,mysql,apache,amazon-ec2,Php,Mysql,Apache,Amazon Ec2,我在php.ini文件中将时区指定为东海岸时间: [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = America/New_York $ service apache2 restart 但我的数据库datetime条目指定西方时间落后3小时。当我在MySQL控制台中查看时区时,它会显示SYSTEM,我一直认为它来自服务器

我在php.ini文件中将时区指定为东海岸时间:

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = America/New_York

$ service apache2 restart
但我的数据库datetime条目指定西方时间落后3小时。当我在MySQL控制台中查看时区时,它会显示SYSTEM,我一直认为它来自服务器上运行的任何脚本语言。在apache2.conf中,我知道如何更改时区,所以这里什么都没有

有人知道我如何在不必在共享服务器上运行的每个php文件中指定正确的时区的情况下,将条目放在正确的轨道上吗?如果有什么安慰的话,我正在美国西俄勒冈地区运行一个EC2实例。我可以在EC2控制台仪表板中更改什么

在MySQL控制台中,它显示的是系统,我一直认为它来自这个系统 服务器上运行的脚本语言

不是这样,很抱歉@尼尔森是对的。MySQL从mysqld服务器机器的默认时区设置中获取其默认时区。脚本语言的时区设置与案例无关

您的mysqld是否在EC2实例中运行?如果是这样,您需要更改该操作系统实例的默认时区设置。你可以看看怎么做。更改默认时区后重新启动EC2实例可能会有所帮助


为了尽量减少混淆,最好将系统时区设置为UTC,也称为Z或Zulu时间,以前称为格林威治标准时间。这样,当夏令时开启或关闭时,事情就不会反弹。

您可以阅读mysql如何设置时区,这里@Nelson我认为您在回答之前没有仔细阅读我的问题。从您提供的链接中:值“SYSTEM”表示时区应与系统时区相同。我的MySQL安装在运行MySQL>选择@@global.time\u zone、@@session.time\u zone;,时显示SYSTEM;,但它并没有像这样更新它。为什么,问题是。约翰,我不是故意苛刻的。该链接显示了两种方法来告诉mysql如何在启动时设置系统时区,一种是传递-default timezone=timezone,另一种是设置TZ环境变量。您还可以为php连接设置时区,并且不必在所有php文件中都包含该时区,这是一个糟糕的设计,您应该创建一个db_connect函数来包装mysql函数,它包含在任何希望对db执行查询的php文件中,所以您只需要在一个地方进行更改。@Nelson我正在尝试在命令行和mysql中更改时区:root@ip-:/-默认时区-“美国/纽约”-bash:-默认时区美国/纽约:没有这样的文件或目录root@ip-:/-默认时区-“美国/东部”-bash:-默认时区美国/东部:无此类文件或目录mysql>设置全局时区=时区;错误1298 HY000:时区未知或不正确:“timezone”mysql>SET GLOBAL time_zone='America/New_York';错误1298 HY000:未知或不正确的时区:“America/New_York”您使用的linux发行版和版本是什么?不是那个家伙,但@Nelson给我指出了一个我以前使用过的链接。我想对这句话做更多的澄清,价值“系统”表明。。。。我知道默认时区来自服务器,但根据我的评论,我不知道在哪里:在apache2.conf中,我看到了更改时区的方法,所以那里什么都没有。这就是为什么我请他再次阅读我的问题。现在你告诉我,我对MySQL时区的假设并不是基于脚本语言,这让我走上了正确的道路。我需要知道如何更改服务器时区。要了解如何更改服务器时区,您可以使用google并要求更改Red Hat Enterprise Linux上的默认时区设置,或者更改Windows 2008 server上的默认时区设置,或者其他相关的设置。这是一项系统管理任务。此外,如果您要运行云服务器实例,最好先了解web服务器apache、php脚本引擎、数据库服务器和服务器实例之间的关系。