2012-08-13 111 views
2

我已經安裝了Symfony2,在修復文件權限後,我可以通過將它指向以下位置來訪問我的瀏覽器的開發環境:request.ERROR:Symfony Component HttpKernel Exception NotFoundHttpException:找不到「GET /」的路由

http://localhost/app_dev.php

然而,當我嘗試通過瀏覽器指向http://localhost訪問的生產環境,我得到下面的異常(從應用/日誌/ prod.log):

[2012-08-13 11:30:03] request.ERROR: Symfony\Component\HttpKernel\Exception\NotFoundHttpException: No route found for "GET /" (uncaught exc eption) at /path/to/frameworks/Symfony2/app/cache/prod/classes.php line 4584 [] []

我然後檢查利用從命令行獲得產品環境的可用路由。這是該調查的結果。令人難以置信的是,它顯示沒有爲這個環境定義的路由(我不相信錯誤消息 - 基本上是說同樣的事情)。

所以,我的結論是:Symfony2開箱即用,並且生產環境沒有默認路由 - 這是真的,還是我在某處犯了錯誤?

更重要的是,我該如何解決這個問題?在SF1.x中,直接從dev切換到prod,反之亦然。例如,如何在產品環境中查看AcmeDemo應用程序。 ?

[更新]]

thecatontheflat反饋後,我添加了一個簡單的測試路線我的routing.yml文件。應用程序/配置/ routing.yml中的內容現在是:

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

當我嘗試http://localhost/test在瀏覽器中,我得到相同的404錯誤。當我調試在控制檯可用的路線時,我得到以下輸出:

[email protected]:~/path/to/frameworks/Symfony2$ php app/console router:debug -e=prod 
[router] Current routes 
Name  Method Pattern 
_welcome2 ANY /test 
+0

可能你在'routing_prod.yml'和'routing_dev.yml'中描述了不同的路由。你應該檢查那些地方。 – 2012-08-13 10:47:07

+0

@thecatontheflat:我沒有routing_prod.yml。這在手冊(IIRC)的任何地方都沒有提及。 – 2012-08-13 10:52:13

+0

然後,如果你想讓'routing_dev'中定義的所有路由都可以在產品環境中訪問 - 你必須將它們移動到'routing.yml'。 – 2012-08-13 10:53:54

回答

3

我有完全相同的問題!

Symfony2中有兩個通用路由文件名爲:

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

然而,也有每捆捆特定路由文件。標準程序是在你的bundle routing.yml文件中定義所有的bundle路由,然後從主路由中引用它。yml文件加入:

YourbundlenameMainBundle: 

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

prefix: /

這就是我的,我仍然得到錯誤。但是後來我更仔細地閱讀了這個錯誤......沒有找到GET/....的路由,然後我檢查了我的routing_dev.yml文件,當然它有一個用於/從Acme演示包​​的歡迎路線。這就是爲什麼它適用於dev版本而不是prod版本!

解決方案:

添加路線/要麼你的routing.yml全局文件或者通過添加您的routing.yml包文件如下:

_welcome: 

pattern:/

defaults: { _controller: YourbundlenameMainBundle:Default:index } 

您可以更改索引一些其它途徑如果你的歡迎頁面是不是指數

1

我有完全相同的問題。這是由於AppKernel.php中缺少bundel引起的。有點晚了,但你可能會嘗試在web/app.php中更改這一行: $ kernel = new AppKernel('prod',false); 至: $ kernel = new AppKernel('prod',true);

這將啓用調試,你應該能夠找到你的問題。當修復時,你會需要將它改回false;)。

希望這會有所幫助。

1

後你要確保你在任何你的routing.yml定義你的/路由

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

清除您的產品環境緩存!

app/console cache:clear --env=prod 
相關問題