誰もログインできず、拒否されたメッセージにアクセスできません


7

このサイトは昨日まで機能していましたが、今は奇妙な動作をしています。

  • サイトには機能が作成されておらず、コードとデータベースを含むアーカイブダンプがサーバーにコピーされ、古いインストールは手動で(残念ながら)新しいものに置き換えられます。 今では、ローカルサーバーでも発生しています。
  • キャッシングモジュールがインストールされていません。セッションAPIもインストールされていません。
  • テーマは「7」に設定されています(念のため、コア管理テーマ)。
  • ウォッチドッグには、通常の「ユーザーxyzのために開かれたセッション」以外のエラー、警告、情報は含まれません。
  • 設定ファイルには、特別なcookieディレクティブは含まれていません。それは決してしなかった。
  • サイトはphp 5.6、Apache 2.2、CentOS 6で実行されています。PHPはfast-cgiとして実行されています。いつもと同じ。
  • Drupal 7です。

example.com/user/loginに移動し、ユーザー名とパスワードを入力すると、フォームが正常に送信され、ページはexample.com/user/%uidにリダイレクトされます(uid 1と他のユーザーの両方が試されました)。そしてブーム!私が取得、アクセスが拒否されました。また、ユーザーはログインしていません。

どのセッションtruncate table sessionsも、セッションテーブルを切り詰めると、一度だけログインできます。その後、uid 1でさえログインできなくなります。

また、パスワードリセットリンクを使用します(drush uli問題なくログインできるコマンドを使用します)。

すべての contribモジュールとテーマを無効にしましたが、同じ問題が解決しません。

セッションでそのような問題を引き起こしているものは何ですか?何か案は?


2
これがDrupal 6の場合は、データベース内の匿名ユーザーレコードがまだuid0であることを確認してください(多くの場合、SQLダンプソフトウェアによって削除され、番号が付け直されます)。あなたが説明しているのは、そのレコードが失敗したときに何が起こるかということです
Clive

@Cliveありがとう、チェックしましたが、uid 0はあります。私のラップトップに同じDBダンプをインポートすることもうまくいきます。そして、それはD7です、私は質問を編集しました。
hkoosha 2014年

これはパスワードのハッシュに関係していると思います。ユーザーにパスワードの再登録と再実行を強制する必要があるかもしれません。新しいドメインでは、パスワードハッシュが変更されるため、パスワードは無効になります...
Akko

@あっこいや...まだアクセスが拒否されます。間違ったパスワードを入力すると間違ったパスワードのエラーが表示されますが、問題は不思議なアクセスが拒否されたことです。
hkoosha 2014年

@loolooyyyy「コンテンツアクセス」モジュールなどをインストールしましたか?
クリシュナモハン

回答:


13

問題はip_geolocモジュールでした。$ _SESSION変数をめちゃくちゃにしていたので、問題のキューに解決策が与えられ(今のところ!)、モジュールの作成者はそれに同意します。私が設定を誤ったために発生している可能性が非常に高いです。ユーザーは正常にログインしましたが、すぐにセッションが無効になりました。どういうわけかそれを無効にするだけでは不十分で、そのディレクトリをDrupalルートの外に移動する必要がありました。その関数やAPIが他の場所で使用されていないことを100%確信しています 多分いくつかのキャッシュの問題?

学んだ教訓:

サインインの問題が発生した場合は、サーバーの $ _SESSION変数をdevelとそのヘルパー関数(例:dpmdsmdd、または最後の手段としてvar_export)を使用して確認し、google / firefox開発者コンソールでは確認しないでください。 。

これは私がこの奇妙な行動に直面している3回目であり、修正することができたのは初めてです。この問題が発生している場合は、次のチェックリストに従ってください。

自問してみてください:

  • セッションテーブルを切り捨てることで問題は解決しますか?
  • ユーザーパスワードの変更を強制的に問題を解決?
  • settings.phpに特定の設定を追加しましたか?例:base_url、cookie_domain、...
  • DOES UID 0あなたのデータベースに存在し(つまり、匿名ユーザー)?
  • どんなれるリダイレクトモジュールがインストールされていますか?search404redirectglobal_redirect、...
  • あなたが持っていますかカスタムモジュールが有効になって?
  • テーマに問題はありませんか?
  • path_aliasなどのパス変更モジュールはありますか?
  • ログイン動作を変更するモジュールはありますか?例:logintoboggan
  • キャッシュモジュールを有効にしましたか?例:authcachememcachesession_cacheboostvarnish、...
  • アクセス制御モジュールが有効になっていますか?例:ワークベンチ、content_access、acl、og_access、...
  • 最後に、ユーザー$ _SESSIONを変更するモジュールを有効にしましたか?例:session_apisession_cacheip_geoloc、...

見る場所/するべきこと

  • drupalsウォッチドッグメッセージを確認してください。ログインできない場合は、drush watchdog-show --tailを使用して何が起こっているかを確認してください。
  • Apacheとmod-phpを実行している場合は、Apacheのエラーログを確認します。通常、* nixシステムの場合は/ var / log / apache / error_logにあります。
  • php-fpmを実行している場合は、php-fpmログを参照し、ヘッダーが失われていないなど、phpデーモンとの通信に問題がないことを確認してください。エラーログが表示されない場合は、drush / php内部サーバーでサイトを実行してみてください。コマンドはdrush rsまたはdrush rs the.ip.goes.here:thePort
  • 完全バックアップを作成し、完全バックアップを作成した後、このコマンドを使用してすべてのモジュールを無効にします(drush ardデータベースでバックアップを作成するか、データベースのみをdrush sql-dump > db.sql使用するか、backup_migrateモジュールを使用できます)
    drush dis -y $(drush pml --nocore --status=enabled --pipe)->このコマンドは* nixシステムでのみ機能します。
  • デフォルトのテーマを何かに設定してください...安全です!セブンやガーランドなど。ログインできない場合は、次のDrushコマンドを使用してください
    drush en seven && drush vset theme_default seven
  • デバッグツールを使用して$ _SESSION変数を監視し、その内容が正しいか、問題ないか、正常かどうかを確認します。
  • 要求の処理に関与するすべてのプロセスとデーモン(nginx、php-fpm、apache、varnish ...)について、それらすべてがtmpディレクトリへの書き込みアクセス権を持っていることを確認してください。

幸運のデバッグ!


4

私にとってうまくいったのは$cookie_domain、settings.phpで変数を有効にして構成することでした(2つの異なるドメインからアクセスできるサイトがあるためです)。

この変数の前のコメントに注意してください!ドメイン名はピリオドで始まる必要があります。例:

$cookie_domain = '.example.com';

幸運を!


デバッグの時間を節約してくれました
Sboniso Marcus Nzimande
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.