4

Symfony2をインストールしました。ファイルのパーミッションを修正した後、ブラウザーから次のポイントを指定して開発環境にアクセスできます。

http://localhost/app_dev.php

ただし、ブラウザをに向けて本番環境にアクセスしようとするとhttp://localhost、次の例外が発生します(app / logs / prod.logから)。

[2012-08-13 11:30:03] request.ERROR:Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException:/ path / to / frameworks / Symfony2/appに"GET/"(キャッチされていない例外)のルートが見つかりません/cache/prod/classes.php行4584[][]

次に、コマンドラインからprod環境で使用可能なルートを確認しました。これがその調査の結果です。

root @ yourbox:〜/ path / to / frameworks / Symfony2 $ php app / console router:debug -e =prod[router]現在のルート名前メソッドパターン

信じられないことに、この環境にルートが定義されていないことを示しています(エラーメッセージを信じていませんでした-本質的に同じことを言っていました)。

だから、私の結論はこれです:Symfony2の箱から出してインストールし、本番環境にはデフォルトルートがありません-これは本当ですか、それともどこかで間違いを犯しましたか?

さらに重要なのは、これをどのように修正するのですか?SF1.xでは、devからprodに、またはその逆に切り替えるのは簡単でした。AcmeDemoたとえば、本番環境でアプリを表示するにはどうすればよいですか。?

[[アップデート]]

catontheflatからのフィードバックの後、routing.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
4

3 に答える 3

4

まったく同じ問題がありました!!

Symfony2には、次の2つの一般的なルーティングファイルがあります。

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

ただし、各バンドルにはバンドル固有のルーティングファイルもあります。標準的な手順は、バンドルrouting.ymlファイルですべてのバンドルルートを定義し、次を追加してメインのrouting.ymlファイルからこれを参照することです。

YourbundlenameMainBundle:

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

prefix:   /

これは私が持っていたものであり、私はまだエラーを受け取っていました。しかし、エラーをさらに詳しく読みました... GET / ....のルートが見つかりませんでした。次に、routing_dev.ymlファイルを確認しました。もちろん、Acmeデモバンドル_welcomeルートからの/へのルートがありました。これが、開発バージョンでは機能しますが、製品バージョンでは機能しない理由です。

解決:

以下を追加して、routing.ymlグローバルファイルまたはrouting.ymlバンドルファイルのいずれかに/のルートを追加します。

_welcome:

pattern:  /

defaults: { _controller: YourbundlenameMainBundle:Default:index }

ウェルカムページがインデックスに登録されていない場合は、インデックスを他のルートに変更できます

于 2012-11-12T15:17:35.133 に答える
1

私はまったく同じ問題を抱えていました。また、AppKernel.phpにバンドルがないことが原因でした。

少し遅れますが、web/app.phpでこの行を変更しようとするかもしれません。

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

に:

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

これによりデバッグが可能になり、問題を見つけることができるはずです。修正されたら、それをfalseに戻す必要があります;)。

お役に立てれば。

于 2012-10-12T21:55:42.460 に答える
1

/routeがrouting.ymlのいずれかで定義されていることを確認した後

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

製品環境のキャッシュをクリアしてください!

app/console cache:clear --env=prod
于 2013-09-15T22:29:59.273 に答える