Symfony 5 @ требуемая аннотация странная проблема с кэшированием во время установки сеттера? - PullRequest
0 голосов
/ 30 января 2020

Я обнаружил эту странную проблему в Symfony 5, которая, как мне кажется, связана с docker и Symfony самой.

МОИ НАСТРОЙКИ

docker-compose.yml

version: '3.7'
services:
  webapp:
    build:
      context: ./php/
      dockerfile: Dockerfile
    container_name: webapp
    image: php:7.4.1-fpm-alpine
    volumes:
      - ../:/srv/app
  apache2:
    build:
      network: host
      context: ./apache2/
      dockerfile: Dockerfile
    container_name: apache2
    image: httpd:2.4.39-alpine
    ports:
      - 8080:80
    volumes:
      - ../:/srv/app
  mysql:
    container_name: mysql
    image: mysql:latest
    ports:
      - 13306:3306
    volumes:
      - mysql:/var/lib/mysql:cached
    environment:
      MYSQL_ROOT_USER: XXX
      MYSQL_ROOT_PASSWORD: XXX
      MYSQL_DATABASE: XXX
      MYSQL_USER: XXX
      MYSQL_PASSWORD: XXX
  redis:
    container_name: redis
    image: redis:5.0.6-alpine
    ports:
      - 16379:6379
    volumes:
      - redis:/data:cached

volumes:
  mysql:
    driver: local
  redis:
    driver: local

Для фреймворка я, конечно, использую Symfony 5. Я совершенно уверен, что эта настройка верна, потому что я использую что-то подобное для моего другого Laravel проекта, и он работает очень хорошо.

ПРОБЛЕМА

На моем уровне я использую аннотацию @required. Чтобы быть более точным, я использую это на установщике, подобном этому:

    /**
     * Get the current request out of RequestStack object.
     *
     * @param RequestStack $requestStack
     * @required
     */
    public function setRequest(RequestStack $requestStack): void
    {
        $this->currentRequest = $requestStack->getCurrentRequest();
    }

Я знаю, что этот бит в порядке, поскольку он всегда работал в предыдущей версии. Кажется, проблема в аннотации @required. Я не уверен, почему, но каждый раз, когда я добавляю его, я получаю:

enter image description here

Похоже, что-то не так с сервером, однако, как только Я вручную очищаю кеш, он работает, и затем после другого вызова (и изменения чего-либо в коде и в вызове почтальона, например, в качестве параметра параметра запроса) он снова ломается, пока я не удаляю @required или не очищаю кеш.

Я сбит с толку - я не уверен, связано ли это с моей настройкой docker, или в механизме кэширования Symfony есть ошибка или, возможно, это комбинация всех моих подозрений и даже больше.

Моя ставка может быть ошибкой в ​​Symfony кэшировании или что-то не так с тем, как я настроил docker. Однако я только начал над этим работать, я даже не подключаюсь к базе данных на этом этапе, это буквально первые шаги в переписывании этого проекта, поэтому ничего интересного не происходит.

Как вы думаете, ребята? Кто-нибудь видел что-то подобное раньше?

ЧТО Я ПОПРОБОВАЛ

Я попытался очистить кэш, удалив и добавив эту аннотацию, я попытался перезагрузить свой docker, я все обрезал и сделал совершенно новую настройку. Пока ничего не получалось.

ОБНОВЛЕНИЕ 30.01.2020 19: 45

Я попробовал тот же самый метод установки непосредственно на контроллере, и я не могу воспроизвести ошибку. Я думаю, что по какой-то причине ему это не нравится.

1 Ответ

0 голосов
/ 10 февраля 2020

Ответом на мою проблему является обновление. Как и в случае с Cerad, упомянутым в его комментарии, обновление PHP с 7.4.1 до 7.4.2 могло бы решить проблему.

Если вы используете Symfony 5, убедитесь, что у вас есть PHP 7.4. 2, чтобы избежать этой конкретной проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...