symfony2 - как перейти с "dev" на "prod"? - PullRequest
57 голосов
/ 22 июля 2011

Я скачал symfony2 и могу запустить его, начиная с app_dev.php.

Но когда я запускаю из app.php, я получаю страницу ошибки 404.

app.Хотя, конечно, там есть php, и он исполняется.

Ошибка, по-видимому, происходит где-то после последней строки кода в app.php:

$kernel->handle(Request::createFromGlobals())->send();

Я предполагаю, что где-то есть переключатель.необходимо настроить.

РЕДАКТИРОВАТЬ :

По предложению GeLo я добавил маршрутизацию для производственной версии в app / config / routing.yml.

_welcome:
    resource: "@AcmeDemoBundle/Resources/config/routing.yml"
    prefix:     /

Я создал src / Acme / DemoBundle / Resources / config / routing.yml с содержимым:

bla:
    pattern: /
    defaults: {_controller:AcmeDemoBundle:Demo:index}

В DemoController::indexAction() Я поместил die(__FILE__);

нет

ничего;Я все еще получаю 404 из app.php!?

РЕДАКТИРОВАТЬ относительно ответа:

./app/console --env=prod cache:clear

сделал трюк.обратите внимание на параметр env.

Ответы [ 6 ]

41 голосов
/ 22 июля 2011

По умолчанию Symfony 2 поставляется с демонстрационным пакетом, доступным только из среды разработки.

Производственная среда не содержит никаких маршрутов, поэтому обычно появляется страница с ошибкой 404.

РЕДАКТИРОВАТЬ:

Вы уверены, что ваш пакет включен в AppKernel.php?

Если да, очистите кеш с помощью следующей команды: ./app/console cache:clear

Проверьте, включен ли маршрут, с помощью следующей команды: ./app/console router:debug

8 голосов
/ 10 декабря 2012

Вместо этого смените владельца.
sudo chown www-data:www-data -R app/cache
sudo chown www-data:www-data -R app/logs

Это позволяет браузеру владеть папками. Синтаксис:
chown <USER>:<GROUP> <SWITCH> <DIRECTORY>

5 голосов
/ 09 января 2015

Я просто хотел объединить пару советов для решения этой проблемы, поскольку в настоящее время я столкнулся с ней с новой новой установкой Symfony2.

В качестве новой установки вы обычно получаете AppBundle в / src / AppBundle вместе с AcmeDemoBundle в / src / Acme / DemoBundle

Если вы хотите запустить AcmeDemoBundle на app_dev и, в то же время, иметь приложение (то есть AppBundle, снабженное новой установкой) на app.php (и избегать 404), вы также можете сделать что-то подобное:

в / app / config / routing_dev.yml прокомментируйте следующие строки (если они у вас есть):

_main:
    resource: routing.yml

в / app / config / routing.yml добавить новый маршрут (если у вас его нет)

index:
    pattern:  /
    defaults: { _controller: AppBundle:Default:index }

затем очистите кеш, как уже советовали другие, и протестируйте приложение на


1) http: // your_application_path / web /


2) http: // your_application_path / web / app_dev.php

Если с первым все в порядке, вы должны получить белую страницу со строкой «Домашняя страница». (чтобы отредактировать это, перейдите в /app/Resources/views/default/index.html.twig ... Макет для этого - base.html.twig), а на втором вы должны получить DemoBundle, предоставленный Symfony2.

Надеюсь, это поможет!

1 голос
/ 08 июля 2012

Я исправил это, просто позволив учетной записи веб-сервера (т. Е. Master-chef) иметь каталог / Symfony2 / app / cache / prod. Команда, как показано ниже:

$sudo chown master-chef -R /var/www/Symfony2/app/cache/prod
0 голосов
/ 15 августа 2015

В вашем файле "web / app.php"

 $kernel = new AppKernel('prod', false);

Измените значение на "true".

 $kernel = new AppKernel('prod', true);

Теперь вы можете загрузить приложение в производственном режиме.

0 голосов
/ 29 сентября 2011

Ваша проблема связана с кешем Symfony2. У меня были такие же проблемы. Попробуйте это:

  • sudo php app/console cache:clear --env=prod --no-debug
  • sudo chmod 777 -R ../sf2/ (sf2) - это основной каталог моего проекта

Вы сделали.

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