请求.错误:SymfonyComponentHttpKernelExceptionNotFoundHtt


request.ERROR: SymfonyComponentHttpKernelExceptionNotFoundHttpException: No route found for "GET /"

我已经安装了Symfony2,修复文件权限后,我可以从浏览器访问开发环境,方法是将其指向:

http://localhost/app_dev.php

但是,当我尝试通过将浏览器指向 http://localhost 来访问生产环境时,我收到以下异常(来自 app/logs/prod.log):

[2012-08-13 11:30:03] 请求。错误: Symfony''Component''HttpKernel''Exception''NotFoundHttpException: No route 找到"GET/"(未捕获的exc eption)在 /path/to/frameworks/Symfony2/app/cache/prod/classes.php line 4584 [] []

然后,我从命令行检查了生产环境的可用路由。 以下是调查结果。

root@yourbox:~/path/to/frameworks/Symfony2$ php app/console 路由器:调试 -e=prod [路由器] 当前路由 名称方法模式

令人难以置信的是,它表明没有为此环境定义路由(我不相信错误消息 - 它基本上说了同样的事情)。

所以,我的结论是这样的:开箱即用的Symfony2安装,生产环境没有默认路由 - 这是真的,还是我在某处犯了错误?

更重要的是,我该如何解决这个问题?在 SF1.x 中,从开发切换到生产是直接的,反之亦然。例如,如何在生产环境中查看AcmeDemo应用。?

[

[更新]]

根据thecatontheflat的反馈,我在routeting.yml文件中添加了一个简单的测试路由。app/config/routing.yml 的内容现在是:

_welcome2:
    pattern:  /test
    defaults: { _controller: AcmeDemoBundle:Welcome:index }

当我尝试在浏览器中http://localhost/test时,我收到相同的 404 错误。当我调试控制台上可用的路由时,我得到以下输出:

root@yourbox:~/path/to/frameworks/Symfony2$ php app/console router:debug -e=prod
[router] Current routes
Name      Method Pattern
_welcome2 ANY    /test

我遇到了完全相同的问题!!

Symfony2有两个通用的路由文件,称为:

app/config/routing.yml and app/config/routing_dev.yml

但是,它在每个捆绑包中也有一个特定于捆绑包的路由文件。标准过程是在 bundle routing.yml 文件中定义所有捆绑路由,然后通过添加以下内容从主 routeting.yml 文件中引用此路由:

YourbundlenameMainBundle:
resource: "@YourbundlenameMainBundle/Resources/config/routing.yml"
prefix:   /

这就是我所拥有的,我仍然收到错误。但后来我更仔细地阅读了错误......找不到 GET/的路由。然后我检查了我的 routing_dev.yml 文件,当然它有一条来自 Acme 演示包_welcome路由的路由。这就是为什么它适用于开发版本而不是生产版本!

溶液:

通过添加以下内容,将/的路由添加到 routeting.yml 全局文件或 routeting.yml 捆绑包文件:

_welcome:
pattern:  /
defaults: { _controller: YourbundlenameMainBundle:Default:index }

如果您的欢迎页面不是索引,您可以将索引更改为其他路由

确保在任何

routeting.yml 中定义了/路由后

_welcome:
pattern:  /
defaults: { _controller: YourbundlenameMainBundle:Default:index }

清除生产环境缓存!

app/console cache:clear --env=prod

我遇到了完全相同的问题。这是由于AppKernel.php中缺少邦德尔造成的。

有点晚了,但您可以尝试在 web/app 中更改此行.php:

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

自:

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

这将启用调试,您应该能够找到您的问题。修复后,您需要将其改回假;)。

希望这有帮助。

相关文章:
  • 没有找到相关文章