2012-02-13 17 views
1

私はPHPで(Symfonyフレームワークを使用して)アプリケーションを開発しました。ApacheエラーログにPHPアプリケーショントレースを表示

私のApacheのエラーログファイルには、エラーのこれらの種類のいっぱいになった:

[Mon Feb 13 20:08:08 2012] [error] [client 60.169.75.168] Empty module and/or action after parsing the URL "/." (/)., referer: http://www.mywebsite.com/account.php 
[Mon Feb 13 20:08:10 2012] [error] [client 60.169.75.168] Empty module and/or action after parsing the URL "/." (/)., referer: http://www.mywebsite.com/services 

は私が問題を追跡できるようにスタックトレースを表示するにはApacheのログを取得することができますとにかくありますか?

私はSymfony(ログに何らかのエラーメッセージを書いている人)に何かを書く(エラートレース)と言わなければならないかもしれません。それはできますか?

更新日:問題は本番環境で発生するため、xdebugを使用することはできません。

おかげで、
ダン

+0

(usualy SYMFONY_DIRに/ログ/ YOUR_APP_prod.log)独自のログファイルにすべての要求のより完全なログを書き込みます

php symfony cc 

あなたのプロダクションマシンにそれをインストールできないのはなぜですか? –

+0

内部ポリシーにより、サーバーに新しいソフトウェアをインストールするのは非常に面倒です。 – dan

+0

私は以前にインストールされていたものの、設定されていない一部のプロダクションサーバに気づきましたが、既にそれがあるかどうかチェックしましたか? –

答えて

1

は、あなたのprodエンバイロメントのためYOUR_APP /設定/ settings.ymlファイル/アプリであなたのsettings.yml設定ファイルを変更してください:

prod: 
    .settings: 
    logging_enabled: true 

アプリであなたにfactories.yml設定ファイルで/ YOUR_APP /設定/factories.yml:

prod: 
    logger: 
    class: sfAggregateLogger 
    param: 
     level: debug 

キャッシュをクリアすることを忘れないでください。 symfonyは私はあなたがファイルをログに記録するxdebugの出力のみを持つことができますかなり確信して

1

私はあなたがやりたいだろう、それはしかし、Apacheのログにスタックトレースを配置しないだろうと考えていることはXdebugと呼ばれるPHP拡張モジュールがありますが、あなたはどこ保存先を指定する必要がありますそれら。

+1

[http://xdebug.org/](http://xdebug.org/)ファイルを読むにはwincachegrindまたはkcachegrindが必要です。 – Xeoncross

+0

問題は、プロダクションマシンでのみ発生するため、XDebugをインストールできません。 – dan

0

to show a stack trace

あなたはそれを必要としません。このメッセージはsymfony Frameworkによって生成され、モジュールaccount.phpまたはservicesについては何も知らないことだけを伝えています。これらのモジュールは、示されたURLから要求されています

http://www.symfony-project.org/book/1_2/04-The-Basics-of-Page-Creation

のURL応答の一部である

symfonyは実際のアクション名の間の完全な 分離を有することを可能にするルーティングシステムが含まれていますそれを呼び出すためにURL の形式が必要でした。これにより、応答の一部であるかのようにURLのカスタム書式設定が可能になります( )。あなたはもはやファイル 構造によっても、要求パラメータによっても制限されません。アクションのURLは のように見えます。例えば、モジュールと呼ばれる記事のインデックス アクションへの呼び出しは、通常、次のようになります。 http://localhost/frontend_dev.php/article/index?id=123

このURL は、データベースから特定の記事を取得します。この例では、 は、フランスの金融について、 が具体的に議論しているヨーロッパセクションの記事(ID = 123)を取得します。しかし、URLがのrouting.yml 設定ファイルの簡単な変更と完全に異なる方法で を書くことができます。 http://localhost/articles/europe/france/finance.html

だけでなく、することは 結果のURLの検索エンジンに優しい、それは のためにも重要ですユーザーは、以下のように、 カスタムクエリを実行するために擬似コマンドラインとしてアドレスバーを使用することができます。 http://localhost/articles/tagged/finance+france+euro

symfonyは は、ユーザーのためのスマートURLを解析し、生成する方法を知っています。ルーティングシステム は、リクエストパラメータをスマートURLから自動的に剥がし、 をアクションで利用できるようにします。また、応答に含まれるハイパーリンクを "スマート"に見せるようにフォーマットします( )。第8章の の詳細については、第9章を参照してください。全体的に言えば、 の名前は、アプリケーションの動作に影響を与えてはなりません。 URLの呼び出しには影響しませんが、アプリケーション内の アクション名は、実際に のアクションがどのようなものであるかを説明し、しばしば不定型の動詞です(たとえば、show、list、 などの編集)。アクション名はエンドユーザの には完全に見えないようにすることができますので、明示的なアクション名( listByNameやshowWithCommentsなど)を使用することをためらってください。コードのコメント を節約して、あなたの行動機能を説明し、さらにコードを読むと、 の方がはるかに簡単になります。

+0

こんにちは。あなたが正しいです - それらのメッセージはSymfonyによって生成されます。事実はそれらのURLが存在することです(私は私の質問を更新するつもりです)。間違ったことをしようとしているプラ​​グインがいくつかあるに違いないが、どのプラグインかどのコードが分からないのか分からない。 実際には、URLを貼り付けたエラーメッセージに「/」が表示されます。 - それはかなり変です。 – dan

+0

@danしかし、あなたの状況には(バックグラウンドはありません)プラグインが何か間違っています。あなたがすべき最初のことは、それらの要求のためにリファラーをチェックすることです、それはあなたに彼らがどこから来ているかのアイデアを与えるでしょう。 – Cheery

+0

私の場合、なぜバックトレースはありませんか?エラーを生成するコードを呼び出すコードはありませんか? – dan

関連する問題