symfony2 - 如何从“dev”切换到“prod”?

时间:2011-07-22 12:21:43

标签: php symfony

我下载了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__);

什么;我仍然从app.php获得404!

关于答案的编辑:

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

做了这个伎俩。介意env-parameter。

5 个答案:

答案 0 :(得分:41)

默认情况下,Symfony 2附带一个只能从开发环境访问的演示包。

生产环境不包含任何路径,因此您可以获得404错误页面。

编辑:

您确定在AppKernel.php中启用了捆绑包吗?

如果是,请使用以下命令清除缓存:./app/console cache:clear

使用以下命令检查路由是否已启用:./app/console router:debug

答案 1 :(得分:8)

改变所有者。
sudo chown www-data:www-data -R app/cache
sudo chown www-data:www-data -R app/logs

让浏览器拥有这些文件夹。 语法是:
chown <USER>:<GROUP> <SWITCH> <DIRECTORY>

答案 2 :(得分:5)

我只是想为这类问题集成一些技巧,因为我现在面对它,并安装了新的Symfony2。

作为全新安装,您通常会在/ src / AppBundle下获得AppBundle和/ src / Acme / DemoBundle下的AcmeDemoBundle

如果你想在app_dev上运行AcmeDemoBundle,同时在app.php上有一个应用程序(即提供全新安装的AppBundle)(并避免使用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),在第二个布局上你应该得到Symfony2提供的DemoBundle。

希望它有所帮助!

答案 3 :(得分:1)

我修改它只是让网络服务器帐户(即'master-chef'拥有/ Symfony2 / app / cache / prod目录。命令如下:

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

答案 4 :(得分:-11)

您的问题与Symfony2的缓存有关。我遇到了同样的问题。试试这个:

  • sudo php app/console cache:clear --env=prod --no-debug
  • sudo chmod 777 -R ../sf2/(sf2)是我的proyect的主目录

你已经完成了。