Словила странный баг, который воспроизводится только в php-образе внутри docker-контейнера.
Внутри контейнера проверяла на версиях 7.4.8 и 7.4.11, официальные образы php-fpm из докерхаба.
Все нормально в песочницах всех версий пхп на внешних сайтах, нормально при запуске этого же кода на 8.0.2 локально.
Обычный код, запущеный от веба и от консоли
var_dump(new \DateTime()); die();
Дает ноль внутри контейнера:
class DateTime#5 (0) { }
Дает обычное содержимое объекта при запуске от локально установленного php 8.0:
object(DateTime)#6 (3) { ["date"]=> string(26) "2021-03-05 14:50:52.333284" ["timezone_type"]=> int(3) ["timezone"]=> string(15) "Europe/Helsinki" }
Внутри контейнера в php.ini установлена таймзона "Europe/Helsinki", она показывается командой date_default_timezone_get.
Команда \DateTime::getLastErrors() не выдает ошибок ни в одном случае:
array(4) {
'warning_count' =>
int(0)
'warnings' =>
array(0) {
}
'error_count' =>
int(0)
'errors' =>
array(0) {
}
}
При этом, если вызвать внутри контейнера
(new \DateTime())->format('Y-m-d')
, то прекрасно выводит текущую дату.
Не нашла описания такого бага в bugs.php.net для 7.4, что это может быть?
UPD. Добавила Dockerfile, docker-compose.yml и php.ini на гист
https://gist.github.com/glaphire/198580cef6d0b1d3a...