symfony2 - 如何从"dev"切换到"prod"?

Raf*_*ael 57 php symfony

我下载了symfony2,我可以从app_dev.php开始运行它.

但是当我从app.php开始时,我得到一个错误页面404.

app.php虽然当然在那里但它会被执行.

错误发生在app.php的最后一行代码之后的某处:

$kernel->handle(Request::createFromGlobals())->send();
Run Code Online (Sandbox Code Playgroud)

我想我必须配置一个开关.

编辑:

正如GeLo所建议的,我将生产版本的路由添加到app/config/routing.yml.

_welcome:
    resource: "@AcmeDemoBundle/Resources/config/routing.yml"
    prefix:     /
Run Code Online (Sandbox Code Playgroud)

我用内容创建了src/Acme/DemoBundle/Resources/config/routing.yml:

bla:
    pattern: /
    defaults: {_controller:AcmeDemoBundle:Demo:index}
Run Code Online (Sandbox Code Playgroud)

DemoController::indexAction()我置于die(__FILE__);

没有; 我仍然从app.php获得404!

编辑答案:

./app/console --env=prod cache:clear
Run Code Online (Sandbox Code Playgroud)

做了伎俩.介意env参数.

ege*_*oen 40

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

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

编辑:

你确定你的包在AppKernel.php中启用了吗?

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

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

  • 就我而言,这还不够.我不得不编辑`app/AppKernel.php`以便它``$ bundles [] = new Acme\DemoBundle\AcmeDemoBundle();`用于''prod'`环境,如下所示:http://forum.symfony -project.org/viewtopic.php?f=23&t=36820 (2认同)

top*_*008 8

改为更改所有者.
sudo chown www-data:www-data -R app/cache
sudo chown www-data:www-data -R app/logs

多数民众赞成让浏览器拥有这些文件夹.语法是:
chown <USER>:<GROUP> <SWITCH> <DIRECTORY>


Fab*_*ato 5

我只是想为这类问题集成一些技巧,因为我现在面对它使用全新的Symfony2安装.

作为一个全新的安装,你通常在/ src/AppBundle和/ src/Acme/DemoBundle下的AcmeDemoBundle一起获得AppBundle

如果你想在app_dev上运行AcmeDemoBundle,同时在app.php上有一个应用程序(即提供全新安装的AppBundle)(并避免使用404),你也可以这样做:

/app/config/routing_dev.yml中注释以下行(如果有的话):

_main:
    resource: routing.yml
Run Code Online (Sandbox Code Playgroud)

/app/config/routing.yml中添加一个新路由(如果没有)

index:
    pattern:  /
    defaults: { _controller: AppBundle:Default:index }
Run Code Online (Sandbox Code Playgroud)

然后像其他人已经建议的那样清空缓存并测试应用程序


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.

希望能帮助到你!