Symfony2 - как переключиться с "dev" на "prod"?

Я загрузил 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() я разместил a die(__FILE__);

нет

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

ИЗМЕНИТЬ ответ:

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

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

Ответ 1

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

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

ИЗМЕНИТЬ:

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

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

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

Ответ 2

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

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

Ответ 3

Я просто хотел интегрировать пару советов по этой проблеме, так как теперь я столкнулся с ней с новой новой установкой 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.

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

Ответ 4

Я исправил это, просто предоставив учетной записи веб-сервера (т.е. "master-chef" принадлежит директории /Symfony 2/app/cache/prod. Команда, как показано ниже:

$sudo chown master-chef -R /var/www/Symfony2/app/cache/prod

Ответ 5

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

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

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

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

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

Ответ 6

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

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

Вы закончили.