【问题标题】:Why is the default PHP time zone "Europe/Moscow" in my system?为什么我的系统中的默认 PHP 时区是“欧洲/莫斯科”?
【发布时间】:2019-10-29 11:39:39
【问题描述】:

我一直在许多 Ubuntu 版本上运行 PHP,它们都表现出相同的“功能”。当我将phpinfo() 函数的输出转储到网页时,我看到以下内容:

Default timezone:   Europe/Moscow

php.ini 文件(/etc/php/7.?/apache2/php.ini/etc/php/7.?/cli/php.ini)都将date.timezone 设置注释掉时,默认情况下就是这种情况。

我系统的时区一直正确设置为Europe/Istanbul

$ file /etc/localtime
/etc/localtime: symbolic link to /usr/share/zoneinfo/Europe/Istanbul

但是,PHP 认为我的本地时区是 Europe/Moscow。目前,这两个时区是相似的,但过去不是这样,将来也可能不是。

为了解决这个问题,每次更新这些php.ini文件时(例如,补丁或系统升级后)我都必须手动编辑它们并设置:

date.timezone = Europe/Istanbul

这种奇怪行为的原因是什么?我可以做些什么来解决这个问题?

目前,我使用的是带有 PHP 7.3 的 Ubuntu 19.10,但以前的操作系统和 PHP 版本也存在问题。

【问题讨论】:

    标签: php linux ubuntu timezone


    【解决方案1】:

    您自己说过莫斯科和伊斯坦布尔在同一个时区。如果您担心您的 PHP 程序可能会在功能发生变化时受到影响,您可以使用该功能

    date_default_timezone_set ( string $timezone_identifier ) : bool

    覆盖 php.ini 文件。我在文档中包含了link

    【讨论】:

    • 我不想在我的 PHP 代码中添加任何代码。 php.ini 文件是设置 system-wide 我的时区的正确方法。问题是默认的 php.ini 文件以某种方式“设置”为莫斯科时区。 (相反,它应该“设置”为伊斯坦布尔时区,这是我的系统级设置时区。)
    猜你喜欢
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 2012-08-05
    • 2018-09-01
    相关资源
    最近更新 更多