Коротко: ошибка Undefined property lazyObjectState (LazyGhostTrait) в Symfony на проде лечится одной строкой в конфиге Doctrine.

Если в Symfony на проде внезапно появилась ошибка Undefined property: Proxies\__CG__\...\Class::$lazyObjectState из LazyGhostTrait, а в dev всё работает — лечится она одной строкой в конфиге Doctrine. Это короткая заметка о новом для связки Doctrine + Symfony типе ошибки.

Выглядит ошибка так:

[2023-12-19T19:31:22.760673+00:00] php.WARNING: User Notice: Undefined property: Proxies\__CG__\App\Entity\SomeClass::$lazyObjectState in /app/vendor/symfony/property-access/PropertyAccessor.php on line 418 {"exception":"[object] (ErrorException(code: 0): User Notice: Undefined property: Proxies\\__CG__\\App\\Entity\\SomeClass::$lazyObjectState in /***/vendor/symfony/property-access/PropertyAccessor.php on line 418 at /***/vendor/symfony/var-exporter/LazyGhostTrait.php:193)"} []

Самое неприятное — ошибка возникает только в prod-окружении; в dev у меня она не воспроизводилась.

Как исправить?

В конфиге /config/packages/doctrine.yaml у вас, скорее всего, будет настройка:

enable_lazy_ghost_objects: true

Переведите её в false — и ошибка пропадёт. На GitHub пишут, что это новая фича версий SF 6.4–7 и обновлённой Doctrine, которая должна как-то работать, но фактически сейчас приводит к ошибке.

Судя по обсуждению здесь и документации, скоро этот параметр нельзя будет переключать в false — но что делать в этом случае, пока неясно.

Рисованный мем-человечек, пожимающий плечами в недоумении — метафора неопределённой ошибки