24

最近、自分のマシンに Symfony2 を正常にインストールしました。

アクセスできますhttp:/localhost/app_dev.php(開発環境)

ただし、prod 環境にアクセスしようとすると、次のようになります。

http:/localhost/app.php

ブラウザに次のエラー メッセージが表示されます。

おっとっと!エラーが発生しました

サーバーは「404 Not Found」を返しました。何かが壊れています。[email] 宛てに電子メールを送信し、このエラーが発生したときに何をしていたかをお知らせください。できるだけ早く修正いたします。不便をかけてごめんなさい。

私は明らかなことを確認しました: app.php ファイルは app_dev.php と同じフォルダーに存在します - そのため、何が原因なのかわかりません。

誰にもこれを修正する解決策がありますか?

[[編集]]

入力してキャッシュをクリアしました:sudo php app/console cache:clear env=prod no-debug推奨どおり。空白の画面が表示されるようになりました。心配なことに、app/logs/prod.log にエラー メッセージが記録されていないため、何が問題なのかわかりません (prod 環境は問題なく動作します)。

私の app/config/routing.yml ファイルの内容:

### fos routing, remove later
fos_user_security:
    resource: "@FOSUserBundle/Resources/config/routing/security.xml"

fos_user_profile:
    resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
    prefix: /profile

fos_user_register:
    resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
    prefix: /register

fos_user_resetting:
    resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
    prefix: /resetting

fos_user_change_password:
    resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
    prefix: /profile

###


# Internal routing configuration to handle ESI
#_internal:
#   resource: "@FrameworkBundle/Resources/config/routing/internal.xml"
#   prefix:   /_internal

ここに私の app/config/routing_dev.yml ファイルがあります

_welcome:
    pattern:  /
    defaults: { _controller: AcmeDemoBundle:Welcome:index }

_demo_secured:
    resource: "@AcmeDemoBundle/Controller/SecuredController.php"
    type:     annotation

_demo:
    resource: "@AcmeDemoBundle/Controller/DemoController.php"
    type:     annotation
    prefix:   /demo

_assetic:
    resource: .
    type:     assetic

_wdt:
    resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
    prefix:   /_wdt

_profiler:
    resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
    prefix:   /_profiler

_configurator:
    resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml"
    prefix:   /_configurator

_main:
    resource: routing.yml

routing_prod.yml ** がないことに気付きました

(警鐘が鳴り響く) - Symfony2 にはプロダクションルーティング設定ファイルが同梱されていませんか?

私の Apache 構成ファイルの内容を以下に示します。

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /path/to/symfony/web
    ServerName localhost

    # Custom log file
    Loglevel warn
    ErrorLog  /path/localhost.error.log
    CustomLog /path/localhost.access.log combined

    <Directory /path/to/symfony/web>
        AllowOverride None
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f 
        RewriteRule ^(.*)$ app.php [QSA,L]
    </Directory>
</VirtualHost>

[[詳細]]

app/logs/prod.log の内容

[2012-08-10 18:10:38] security.INFO: 匿名トークン [] [] [2012-08-10 18:10:38] request.ERROR: Symfony\Component\HttpKernel\Exception\ NotFoundHttpException: /path/to/symfony/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/EventListener/RouterListener.php 行 83 で「GET /」(キャッチされない例外) のルートが見つかりません [] []

4

9 に答える 9

41

本番環境をオンにしてキャッシュをクリアしましたか?コンソールを実行し、これを行います。

app/console --env=prod cache:clear
于 2012-08-08T10:26:24.060 に答える
4

最近 Symfony 2.2 をインストールしたので、私もこの問題に遭遇しましたが、実際には正常な動作です。つまり、すぐに使用できる Symfony 2.x (この記事の執筆時点) には、運用環境用のルート/コンテンツが同梱されていません。

あなたの場合、Friends of Symfony バンドルをインストールしたように見えます。これにより、本番ルートにいくつかのルートがセットアップされました ( routing.yml) が、一見すると、どのルートも本番環境のルートをターゲットにしていないようですhttp:/localhost/app.php/。 . ただし、ルートをインポートしているため、詳細が不明瞭になっているため、完全にはわかりません。ルートを確認する優れた方法は、 CLI コマンドについて学ぶことができるルートの視覚化とデバッグを読むことです。app/console router:debug

routing.yml実稼働環境でのルートのデフォルトの場所です (意味routing_prod.ymlはありません)。routing_dev.ymlimportに気付くでしょうrouting.yml。つまり、本番環境に置くすべてのものは、(箱から出して) 開発環境でアクセスできます。表示されるデモ コンテンツは開発環境専用であるため、本番環境では表示されません。必要に応じていくつかのものを自由に移動してください。ただし、一般的には、開発者がプロ​​ダクションをインポートすることをお勧めしますが、その逆はお勧めしません。

プロダクションで変更をテストしたいときはいつでも、@tolgap が推奨するようにキャッシュをクリアする必要があります。実稼働環境はプリコンパイル済みキャッシュに大きく依存しているため、そのコマンドは実稼働キャッシュを強制的に更新します。開発環境は常にキャッシュを更新しています。これを理解することは、Symfony を使用する上で非常に重要です。Symfony.org の本は優れた入門書ですが、キャッシングとワークフローのサブタイトルに関するこの点を正確に理解できるわけではありません。routing.yml開発のソフト キャッシングとrouting_dev.ymlプロダクションのハード キャッシングの関係に気付く前に、私は間違いなく 1 分間混乱しました。

于 2013-03-25T23:38:16.027 に答える
2

誰もあなたに言わなかったことに驚いています: あなたには / へのルートがありません。

これを app/config/routing.yml に書きます

  _welcome:
 pattern:  /
 defaults: { _controller: AcmeDemoBundle:Welcome:index }
于 2013-07-04T14:36:12.853 に答える
2

今日、私は同じ問題を抱えていて、さまざまな解決策を試しました。mod_rewrite Apache サービスを有効にすることが重要であることを思い出すまで。これを行うには、次のコマンドを実行します (Ubuntu の場合)

sudo a2enmod rewrite

そして、サーバーを再起動します

sudo service apache2 restart

誰かが助けてくれることを願っています。よろしく!

于 2016-09-20T20:46:09.007 に答える
-2

(Agrega esto dentro del archivo routing_dev.yml) これを routing_dev.yml に追加します。

_wellcome:
    pattern: /
    defaults: { _controller:AppBundle:Default:index }
于 2015-06-29T16:29:43.843 に答える