symfony2 – 如何从“dev”切换到“prod”?
我下载了symfony2,我可以从app_dev.php开始运行它。
但是当我从app.php开始,然后我得到一个错误页面404。
app.php虽然是当然,它被执行。
错误发生在app.php的最后一行代码后面:
$kernel->handle(Request::createFromGlobals())->send();
我想有一个地方我必须configuration一个开关。
编辑 :
正如GeLo所build议的,我将生产版本的路由添加到app / config / routing.yml。
_welcome: resource: "@AcmeDemoBundle/Resources/config/routing.yml" prefix: /
我用内容创build了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中启用的吗?
如果是,请使用以下命令清除caching: ./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提供了新的安装),你也可以这样做:
在/app/config/routing_dev.yml注释下列行(如果有的话):
_main: resource: routing.yml
在/app/config/routing.yml中添加一个新的路由(如果你没有)
index: pattern: / defaults: { _controller: AppBundle:Default:index }
然后像其他人已经build议的那样清空caching并testing应用程序
1)http:// your_application_path / web /
2)http:// your_application_path / web / app_dev.php
如果一切都很好,你应该得到一个带有“主页”string的白页。 (编辑这个去/app/Resources/views/default/index.html.twig …这一个布局是base.html.twig),第二个,你应该得到由Symfony2提供的DemoBundle。
希望能帮助到你!
我只是让Web服务器帐户(即“主厨”拥有/ 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的caching有关。 我也有同样的问题。 尝试这个:
-
sudo php app/console cache:clear --env=prod --no-debug
-
sudo chmod 777 -R ../sf2/
)是我的专家的主要目录
你完成了。