簡體   English   中英

symfony2 - 如何從“dev”切換到“prod”?

[英]symfony2 - how to switch from “dev” to “prod”?

我下載了 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 參數。

默認情況下,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 下獲得 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

如果第一個上一切正常,您應該得到一個帶有字符串“主頁”的白頁。 ( to edit this one go in /app/Resources/views/default/index.html.twig... Layout for this one is base.html.twig ) and, on the second one you should get the DemoBundle provided by Symfony2.

希望能幫助到你!

我只讓網絡服務器帳戶(即'master-chef'擁有/Symfony2/app/cache/prod目錄)來修復它。命令如下:

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

在您的“web/app.php”文件中

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

將值更改為“真”。

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

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

您的問題與 Symfony2 的緩存有關。 我有同樣的問題。 嘗試這個:

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

你完成了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM