Pim-community-dev: Прокси-класс Doctrine не создается после добавления свойства настраиваемой категории

Созданный на 15 июн. 2017  ·  15Комментарии  ·  Источник: akeneo/pim-community-dev

Я задаю вопрос

Привет,

Я следил за поваренной книгой, чтобы добавить непереводимое свойство к сущности категории в 1.7.5 CE (ORM).

В среде dev все работает нормально, но после перехода на prod я столкнулся с app/cache/prod/doctrine/orm/Proxies/__CG__PimBundleCatalogBundleEntityCategory.php): failed to open stream: No such file or directory .

Я попытался вручную разогреть кеш, но при этом создается только прокси-класс доктрины для моей новой настраиваемой сущности категории, которая расширяет BaseCategory. Единственное решение, которое я нашел до сих пор, - скопировать этот прокси-класс в __CG__PimBundleCatalogBundleEntityCategory.php, что, вероятно, не совсем лучшая практика ;-)

Не могли бы вы намекнуть, что мне не хватает?

Спасибо!

question

Самый полезный комментарий

Привет @DavidFeller!

Вы можете попытаться разогреть свой кеш продукта с помощью следующей команды:
php app/console cache:warmup --env=prod --no-debug

В большинстве случаев это устраняет проблемы с кешем.

С Уважением

Все 15 Комментарий

Привет @DavidFeller!

Вы можете попытаться разогреть свой кеш продукта с помощью следующей команды:
php app/console cache:warmup --env=prod --no-debug

В большинстве случаев это устраняет проблемы с кешем.

С Уважением

Привет @momoss ,

спасибо за быстрый ответ! :)

К сожалению, это то, что я пробовал уже несколько раз. Кажется, работает (без вывода ошибок), но после этого __CG__PimBundleCatalogBundleEntityCategory.php все еще отсутствует.
Кроме того, я проверил сопоставления сущностей через php app/console doctrine:mapping:info .

Я знаю, что это скорее проблема с доктриной или symfony, чем на самом деле связана с akeneo, но я полагаю, что мне не хватает небольшой детали в конфигурации AcmeCatalogBundle с точки зрения переопределения BaseCategory.

Или вы думаете, что это хуже - понизить php до 5.6?

Привет @DavidFeller!

После обсуждения с @ damien-carcel он сообщил мне, что чего-то не хватает в документации, мы обновили ее вчера.

Можете ли вы проверить свой Category class , возможно, метод отсутствует:

public function getTranslationFQCN() { return CategoryTranslation::class; }

С Уважением

Привет @momoss ,

Хорошо, я это проверю. Я думал, что этот метод нужен только для второй части документов (переводимые свойства). Поскольку я только добавил флажок, я "проигнорировал" эту часть. ;-)

Думаю, я попытаюсь начать все сначала и создать переводимое свойство.

Спасибо за вашу помощь и привет,
Дэйвид

У меня такая же проблема с последней версией 2.0. Точно такая же проблема, и я следил за теми же документами.

И я добавил поле как переводимое. Он добавлен в базу данных, но по-прежнему не работает в производственной среде.
Это то, что я получил от самого производственного сервера, и я обнаружил ту же ошибку. "" Ошибка компиляции: require (): Не удалось открыть '/opt/bitnami/apps/akeneo/htdocs/var/cache/prod/doctrine/orm/Proxies/__CG__PimBundleCatalogBundleEntityCategory.php'

Привет @Nebojsaa .

Сожалеем, что эта поваренная книга вам не подходит. Я только что полностью протестировал его из pim-community-standard , он работает у меня, есть только одна ошибка в FormType относительно виджета: старая нотация больше не работает с Symfony 3.4.

Вы можете увидеть мой код в этом запросе на перенос https://github.com/damien-carcel/pim-community-standard/pull/1. Ошибка, о которой я говорю, находится в последней фиксации. Я обновлю документацию как можно скорее.

Я не полностью следил за кулинарной книгой: все помещено в AppBundle а все службы и параметры объявлены в services.yml . Я также добавил подсказку типа PHP 7.1. Но это не меняет действительности поваренной книги (за исключением, конечно, проблемы с текстовым полем).

Попробуйте сравнить свой код с моим, возможно, вы забыли переопределение службы / параметра.

Также не забывайте, что примеры кода в кулинарной книге можно прокручивать. Сначала я пропустил метод setDescription в классе CategoryTranslation .

Наконец, не забудьте очистить кеш (полностью удалить его с помощью rm -rf var/cache/* ), перезапустить FPM и только затем обновить схему Doctrine.

У вас также могут быть проблемы с кешем, если запущен демон очереди Akeneo (для импорта / экспорта): он предотвратит очистку вашего кеша APC, а затем снова загрязнит ваш кеш Symfony. Если вы используете демон очереди, правильная процедура:

  • остановить демона
  • rm -rf var/cache/*
  • перезапустить FPM
  • запустить демон снова
  • обновите схему Doctrine

Кстати, пожалуйста, не пишите по закрытым вопросам, потому что обычно никто не отвечает / не видит. Я увидел ваш комментарий только потому, что был отмечен в разговоре и получил уведомление GitHub об этом. Пожалуйста, откройте новый выпуск и добавьте ссылку на исходный.

Сообщите мне, помогло ли это вам.

С уважением,
Дэмиен

Хммм, это странно. Я сделал все, как было предложено, но не могу заставить это работать. Также пытаюсь добавить категорию без перевода. Думаю, меня это не беспокоило.

[2018-01-12 05:55:50] request.CRITICAL: Неперехваченное исключение PHP Symfony \ Component \ Debug \ Exception \ FatalErrorException: «Ошибка компиляции: require (): Не удалось открыть» / opt / bitnami / apps / akeneo / htdocs / var / cache / prod / doctrine / orm / Proxies / __ CG__PimBundleCatalogBundleEntityCategory.php '(include_path ='.: / opt / bitnami / php / lib / php ') "в / opt / bitnami / apps / akeneo / htdocs / vendor /doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php строка 209 {"исключение": "[объект] (Symfony \ Component \ Debug \ Exception \ FatalErrorException (код: 0): Ошибка компиляции: require (): Не удалось открыть '/opt/bitnami/apps/akeneo/htdocs/var/cache/prod/doctrine/orm/Proxies/__CG__PimBundleCatalogBundleEntityCategory.php' (include_path = '.: / Opt / bitnami / php / lib / php') в /opt/bitnami/apps/akeneo/htdocs/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php:209) "} []

С уважением,
Небойшаа

pim_enrich.form.type.category.class неверно, вы используете Acme вместо вашего пакета.

В остальном все ок. Я просто использовал ваш пакет со стандартом pim-community-standard 2.0, удалил маршрутизацию (это бесполезно) и настроил переопределение сущности в app/config/config.yml . Мне удалось отредактировать и сохранить категорию с вашими новыми полями без каких-либо проблем.
Мне также нужно было деактивировать вашу проверку на вашем поле, иначе я не смог установить приспособления icecat (вы подтверждаете, что ваши поля не могут быть пустыми, но их нет в моих приспособлениях 😉).

Так что я действительно думаю, что проблема исходит от вашего сервера. И если посмотреть на ошибку в вашем предыдущем посте, она явно выглядит как проблема с кешем PHP. Что-то может быть запущено на сервере bitnami, что препятствует очистке кеша при перезапуске FPM.

С уважением,
Дэмиен.

Привет, Дэмиен,
Хорошо, я никогда в жизни не был системным администратором. Сейчас самое время.

Может быть, какие-нибудь советы, кроме тех, что сверху.
Вы знаете, где я могу остановить, запустить демон и перезапустить fpm?
Я использую php 7.1.
Вы знаете, какие команды мне использовать?

Для перезапуска FPM это будет зависеть от вашего сервера. Какой дистрибутив Linux вы используете? Большинство из них теперь используют systemd качестве init, поэтому вы сможете перезапустить FPM, запустив sudo systemctl restart php7.1-fpm (имя процесса FPM может меняться от системы к другой).

Очередь - это простой php-процесс, который можно запустить вручную или с помощью супервизора. Вы можете найти подробные инструкции здесь: https://docs.akeneo.com/latest/install_pim/manual/daemon_queue.html.

Хм, пока что удалось.
Теперь отображается "Hello World!" - Мой индекс по умолчанию index.html.twig ??

Ах, да. Обычный. Вы ведь используете команду generate:bundle , верно?
Вам нужно удалить представление Default/index.html.twig , контроллер и маршрутизацию из вашего пакета (не забудьте также удалить его из app/config/routing.yml ). Они бесполезны.
Тогда это должно сработать.

Следующая ошибка :-D
Нет, я просто шучу ..
Большое спасибо.

доброе утро, всем привет. У меня небольшая проблема, я работаю над проектом с Symfony 4, у меня есть база данных моего проекта в postgressql, я установил этот менеджер и установил соединение с ним с помощью указанного фреймворка, но когда я пытаюсь сгенерировать объекты из этой базы данных с помощью команды php bin / console doctrine: mapping : import "App \ Entity" annotation --path = src / Entity, это дает мне следующую ошибку:

В строке 151 ImportMappingDoctrineCommand.php:

Предупреждение: file_put_contents (src / Entity / "tsubtipoanestesia" .php): не удалось открыть поток: нет такого файла или каталога.

Хотелось бы узнать, как это решить.
Спасибо.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги