【问题标题】:PHP new DateTime() throws Invalid date.timezone valuePHP new DateTime() 抛出无效的 date.timezone 值
【发布时间】:2021-01-21 21:42:28
【问题描述】:

这个脚本:

<?php
    $dateTime = new DateTime();
?>

抛出此错误:

PHP Fatal error:  Uncaught Exception: DateTime::__construct(): Invalid date.timezone value 'America/Argentia/Buenos_Aires', we selected the timezone 'UTC' for now. in /var/www/html/date.php:2
Stack trace:
#0 /var/www/html/date.php(2): DateTime->__construct()
#1 {main}
  thrown in /var/www/html/date.php on line 2

注意时区“Argentia”,看起来像是错字,但我不知道它是在哪里配置的。

我已经尝试过的:

  • 我在 php.in:date.timezone = "America/Argentina/Buenos_Aires" 中编辑了时区并重启了 apache2 服务。
  • 我检查了服务器时区(没关系):
# timedatectl | grep "Time zone"
Time zone: America/Argentina/Buenos_Aires (-03, -0300)

注意: 在脚本开头添加以下行 date_default_timezone_set("America/Argentina/Buenos_Aires"); 问题“已解决”,但我正在寻找该问题的通用解决方案。

系统信息: Ubuntu 16.04 和 PHP 7.4

谢谢!

【问题讨论】:

  • 默认时区由 PHP.INI 中的data.timezone 条目配置。你说你已经编辑了,所以这是你的一般解决方案。如果这不能解决问题,您确定您编辑了正确的 PHP.INI 副本吗?
  • 这能回答你的问题吗? Setting the Timezone for PHP in the php.ini file
  • phpinfo() 显示: 加载的配置文件 /etc/php/7.4/apache2/php.ini date.timezone America/Argentia/Buenos_Aires America/Argentia/Buenos_Aires 当编辑这个文件时,我有: date.timezone = "America/Argentina/Buenos_Aires" 我正在重新启动 Apache 使用: sudo service apache2 restart 我不知道出了什么问题!

标签: php datetime timezone


【解决方案1】:

我尝试了发布的解决方案,但它们对我不起作用。我写了一个 phpinfo() 页面来显示 php.ini 文件的位置。然后,我对其进行了编辑以设置新的 date.timezone,并重新启动服务器,更改没有影响。

这是帮助我修复错误时区的原因:

  1. 我在 php 文件夹下找到错字的时区,使用:
grep -rl "Argentia" /etc/php
  1. 命令输出:
/etc/php/7.4/mods-available/Custom.ini
  1. 所以,我编辑找到的文件并修改时区。
  2. 重启apache2服务,就可以了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 2020-10-12
    相关资源
    最近更新 更多