PHP 日期函数不符合 date_default_timezone_set

PHP date function is not respecting date_default_timezone_set

我想弄清楚为什么日期函数不遵守默认的 php 时区。 这是我的测试脚本:

<?php

echo( "date_default_timezone_get: " . date_default_timezone_get(). "\n" );
echo( "date: " . date(DATE_RFC2822) . "\n" . "gmdate: " . gmdate(DATE_RFC2822) . "\n" );
echo( "date_default_timezone_set( 'UTC' ): " . date_default_timezone_set( 'UTC' ) . "\n" );
echo( "date: " . date(DATE_RFC2822) . "\n" . "gmdate: " . gmdate(DATE_RFC2822) . "\n" );
echo( "date_default_timezone_get: " . date_default_timezone_get() );
exit;

它的输出是:

date_default_timezone_get: Europe/Rome
date: Thu, 08 Jul 2021 14:30:40 +0200
gmdate: Thu, 08 Jul 2021 12:30:40 +0000
date_default_timezone_set( 'UTC' ): 1
date: Thu, 08 Jul 2021 14:30:40 +0200
gmdate: Thu, 08 Jul 2021 12:30:40 +0000
date_default_timezone_get: UTC

如您所见,当我将默认时区设置为 UTC 时,日期函数不会更改它的输出

我在 debian 10 机器上使用 php fpm 7.4

> php -v
PHP 7.4.20 (cli) (built: Jun  4 2021 23:17:27) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.20, Copyright (c), by Zend Technologies

通过更新到 PHP

的次要版本解决