我一直在许多 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
这种奇怪行为的原因是什么?我该怎么做才能解决这个问题?
目前,我在 Ubuntu 19.10 和 PHP 7.3 上,但这个问题在以前的操作系统和 PHP 版本中也存在。
最佳答案
您自己说过莫斯科和 Istanbul 尔处于同一时区。如果您担心您的 PHP 程序在发生变化时可能会影响功能,您可以使用该功能
date_default_timezone_set(字符串 $timezone_identifier):bool
覆盖 php.ini 文件。我已经包含了一个 link到文档。
关于php - 为什么在我的系统中默认的 PHP 时区是 "Europe/Moscow"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58606738/