web-dev-qa-db-ja.com

[管理]-> [レポート]に表示されるリダイレクトエラーの原因を追跡するにはどうすればよいですか?

Reports -> Recent log messages、次のような多数のエラーがあります。

多言語サイト(英語enおよび日本語ja)を持っているので、どこかに不良リンクがあるか、モジュールが登録ページへの不良リンクを出力していると思います。どこで確認できますか?私が持っている唯一の手がかりは、最近のエラーログのこのエントリです。

リンク(http://mysite.com/ja/user/en/user/register)、「ページが正しくリダイレ​​クトされていません。Firefoxが、サーバーがこのアドレスへのリクエストを決して完了しない方法でリダイレクトしていることを検出しました。」

3
Patrick Kenny

失敗したリダイレクトURIの名前(_user/register_など)がわかっている場合は、データベースをスキャンしてリダイレクトエントリを探すのが最適です。 drushを使用:

_drush sql-dump --ordered-dump | grep "user/register"
_

または、dd()(Develから)を drupal_goto() に追加し、各呼び出しのバックトレースをファイルに記録します。

_dd(debug_backtrace(FALSE, 5));
_

tmpフォルダの_drupal_debug.txt_を確認します。


別のトリックには DTrace の使用と静的プローブへのフックが含まれます(PHPがそれをサポートしている場合:_php -i | grep dtrace_)、たとえば(スクリプトの実行後):

_Sudo dtrace -qn 'php*:::function-entry { printf("%Y: PHP function-entry:\t%s%s%s() in %s:%d\n", walltimestamp, copyinstr(arg3), copyinstr(arg4), copyinstr(arg0), basename(copyinstr(arg1)), (int)arg2); }'
_

次に、それをgrepして、_drupal_goto_などの特定の関数を探すことができるため、上記に追加できます。

_| grep -B5 drupal_goto > trace.txt
_

したがって、これは、前に5回の関数呼び出しで_drupal_goto_へのすべての呼び出しをファイルにログインします。

参照: 最後に行われた要求の関数スタックトレースを生成する方法?

2
kenorb