glaphire
@glaphire
PHP developer

Почему не отображается внутреннее содержимое объекта DateTime в php в docker-контейнере?

Словила странный баг, который воспроизводится только в 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...
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
glaphire
@glaphire Автор вопроса, куратор тега PHP
PHP developer
Я не знаю как это могло влиять, но я убрала xdebug из сборки докер контейнера и проблема ушла.
Буду рада комментариям и ответам, если кто-то может объяснить причину)
UPD.
Оказывается есть такой баг, но описан на сайте xdebug
https://bugs.xdebug.org/bug_view_page.php?bug_id=0...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы