我下载了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
改为更改所有者.
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和/ 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.
希望能帮助到你!