我下载了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。
答案 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的主目录你已经完成了。