首页 > 解决方案 > PHP new DateTime() 抛出无效的 date.timezone 值

问题描述

这个脚本:

<?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”,看起来像是错字,但我不知道它在哪里配置。

我已经尝试过:

# 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

谢谢!

标签: phpdatetimetimezone

解决方案


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

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

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

推荐阅读