繁体   English   中英

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

[英]symfony2 - how to switch from “dev” to “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()我放了一个die(__FILE__) ;

没有什么; 我仍然从 app.php 得到 404?

编辑关于答案:

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

成功了。 注意 env 参数。

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

生产环境不包含任何路由,所以出现 404 错误页面是正常的。

编辑:

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

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

使用以下命令检查路由是否启用: ./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 安装来面对它。

作为全新安装,您通常会在 /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

如果第一个上一切正常,您应该得到一个带有字符串“主页”的白页。 ( to edit this one go in /app/Resources/views/default/index.html.twig... Layout for this one is base.html.twig ) and, on the second one you should get the DemoBundle provided by 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);

将值更改为“真”。

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

现在您可以在生产模式下加载应用程序。

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

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

你完成了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM