2011-07-22 24 views
55

我下載了symfony2,我可以從app_dev.php開始運行它。symfony2 - 如何從「dev」切換到「prod」?

但是,當我從app.php開始,然後我得到一個錯誤頁面404

app.php雖然是當然的存在,並且得到執行。

錯誤的代碼app.php最後一行後會發生明顯的地方:

$kernel->handle(Request::createFromGlobals())->send(); 

我想有一個開關的地方我必須配置。

編輯

正如仡佬建議我增加了生產版本的應用程序/配置/ routing.yml中的路由。

_welcome: 
    resource: "@AcmeDemoBundle/Resources/config/routing.yml" 
    prefix: /

我創建的src/Acme公司/ DemoBundle /資源/配置/ routing.yml中的內容:

bla: 
    pattern:/
    defaults: {_controller:AcmeDemoBundle:Demo:index} 

DemoController::indexAction()我置於die(__FILE__);

沒事;我仍然從app.php獲得404!

關於答案編輯:

./app/console --env=prod cache:clear 

的伎倆。介意env參數。

回答

39

默認情況下,Symfony 2提供了一個可從開發環境訪問的演示包。

生產環境中不包含任何路由,所以正常情況下會出現404錯誤頁面。

編輯:

你確定你的束能夠在AppKernel.php?

如果是,請清除使用以下命令緩存:./app/console cache:clear

檢查路線是使用以下命令啓用:./app/console router:debug

+0

哦...我沒有檢查。我猜想這兩個設置是對稱的,除了錯誤處理和東西。 – Raffael

+0

請看看我的編輯。謝謝 – Raffael

+0

再次感謝,實際上我跟蹤了這​​一點,並從appkernel中刪除了這個包,現在正在使用新的路由。請看看我最近的編輯。 – Raffael

-10

你的問題是有關的Symfony2的緩存。我有同樣的問題。試試這個:

  • sudo php app/console cache:clear --env=prod --no-debug
  • sudo chmod 777 -R ../sf2/(SF2)是我proyect的主目錄

大功告成。

+0

你救我一天!!!!!!! –

+40

'chmod 777 -R'真的嗎?不要做,它是一個安全的危險。 –

+3

這是自殺。至少告訴他做'chmod -R 777 app/cache app/logs'而不是整個事情,但是隻有在沒有任何工作的情況下在dev中進行調試。 – ChocoDeveloper

1

我只是讓Web服務器帳戶(即'master-chef'擁有/ Symfony2/app/cache/prod目錄。命令如下:

$sudo chown master-chef -R /var/www/Symfony2/app/cache/prod 
7

改變所有者。
sudo chown www-data:www-data -R app/cache
sudo chown www-data:www-data -R app/logs

這就是讓瀏覽器自己的文件夾。 語法爲:
chown <USER>:<GROUP> <SWITCH> <DIRECTORY>

5

我只是想,因爲我有一個新的新的Symfony2安裝它面對時下的一些提示整合了這樣那樣的問題。

作爲全新安裝,你通常與AcmeDemoBundle下/ src目錄/阿克米/ DemoBundle

如果你想在app_dev運行AcmeDemoBundle,在此期間,有一個應用程序(即獲得的appbundle下/ src目錄/的appbundle在一起上的appbundle提供app.php用新鮮的安裝)(避免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 /網絡/


2)的http:// your_application_path /網絡/ app_dev.php

如果在第一張照片上一切正常,您應該看到一個帶有「主頁」字符串的白色頁面。 (編輯這個去/app/Resources/views/default/index.html.twig ... 佈局這個是base.html.twig),第二個,你應該得到DemoBundle提供的Symfony2的。

希望它有幫助!

-1

在您的 「網絡/ app.php」 文件

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

將值更改爲 「true」。

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

現在您可以在生產模式下加載應用程序。

+0

這是一個非常糟糕的做法,與部署應用程序根本無關。 –

+0

@WouterJ你能告訴我爲什麼這是一個不好的做法?我是Symfony的初學者。 :-) – tomloprod

+0

@tomloprod調試顯示了許多你不想向你的用戶(和潛在的黑客)顯示的數據:文件名,數據庫信息,詳細的錯誤消息,轉儲等。你可以想象在prod中運行調試是非常不安全的:) –

相關問題