symfony2 – как переключиться с «dev» на «prod»?

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

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

app.php, хотя, конечно, есть, и он выполняется.

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

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

Я предполагаю, что есть переключатель, который мне нужно настроить.

EDIT :

Как предположил 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!?

EDIT относительно ответа:

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

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

Related of "symfony2 – как переключиться с «dev» на «prod»?"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Измените значение на «true».

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

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

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

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

Все готово.