EC-CUBE4系で管理画面にログインできない場合の対処方法
通販サイトを運営していて、管理画面にログインできずに困ったことはありませんか?
IDとパスワードは正しいのに「ログインできませんでした」と表示される、ログインを試みると500エラーが表示される、あるいは管理画面のURLがわからないなど、さまざまなケースがありますが、今回はログインできない場合の対処方法とその原因をいくつかご紹介します。
当記事でご紹介している対処方法には、一時的にセキュリティレベルを下げてしまったり、ユーザーの操作に影響を及ぼす可能性があります。ファイルやデータへの変更を加える場合は、必ず事前にバックアップを取得するなどの対策を行って、万全の体制でお試しください。内容の理解が難しい場合は、開発会社等に相談し、対応をお願いすることを強く推奨します。
問題が起きた際に、当社は一切の責任を負いかねますのであらかじめご了承ください。※有償でのサポートのみ行っております。
目次
1.ログインできない場合の対処方法
1-1. ブラウザのキャッシュクリア
ブラウザに古いCookieが残っている場合、管理画面へのログインができなかったり、カートに商品を追加できないといった現象が発生することがあります。この場合、ブラウザのキャッシュをクリアすることで解消されるケースがあります。
ブラウザのキャッシュクリア、別のブラウザでのアクセス、シークレットモードでのログインなどをお試しください。
1-2. サーバーのキャッシュクリア
EC-CUBEのインストールやプラグインの有効化など、EC-CUBEの裏側で行われる様々なプロセスにより、まれに壊れたキャッシュが残ってしまうことがあります。
キャッシュファイルが影響してログインの妨げになっている場合は、SSHなどを使ってサーバーにアクセスして、EC-CUBEがインストールされたディレクトリでコマンド($ bin/console cache:clear –no-warmup)を実行するか、SSHやSFTPでサーバーに接続して、「/var/cache/」内のファイル・フォルダを削除する方法があります。
ただし、キャッシュを削除した直後に複数のリクエストを同時に受け取ると、キャッシュの不整合が発生してシステムエラーの原因になる可能性がありますのでご注意ください。
1-3. 「.envファイル」のECCUBE_COOKIE_PATH確認&&修正
EC-CUBEを別のディレクトリに移動したり、設置ディレクトリを変更した場合、CookiePathの設定がズレてしまいログインに影響を及ぼす可能性があります。
その場合は、サーバーにアクセスして、EC-CUBEをインストールしたディレクトリに配置されている「.envファイル」の「ECCUBE_COOKIE_PATH」を確認しましょう。
EC-CUBEがドメインのドキュメントルートに設置され、ドメインのトップページにEC-CUBEが設置されている場合、ECCUBE_COOKIE_PATHは「/」に設定されている必要があります。(EC-CUBE が”example.com/shop” に設置されている場合は「/shop」になります。)
1-4. AUTH_MAGIC の確認&&修正
EC-CUBEを別のサーバーに移管したり、新たに立ち上げたEC-CUBEにデータを移行した場合は、パスワードの暗号化に利用する「AUTH_MAGIC」が変更されてしまい、ログインができなくなります。
その場合は、EC-CUBEをインストールしたディレクトリに配置されている「.envファイル」内の「AUTH_MAGIC」を確認して、稼働中のサーバー内の設定と比較して、必要に応じて修正を行いましょう。
1-5. IPアドレスが変わってしまい弾かれる
EC-CUBE4系では、管理機能へのアクセスを特定のIPアドレスからの接続のみに制限したり、逆に特定のIPアドレスからの接続を拒否する設定があります。元々IPアドレスによる制限を行っていた場合、何らかの事情で接続元のIPアドレスが変更された時に、アクセスができなくなってしまいます。
その場合は、EC-CUBEをインストールしたディレクトリに配置されている「.envファイル」内の「ECCUBE_ADMIN_ALLOW_HOSTS」を変更することで解消できます。
今、ご自身が使っているIPアドレスがわからないという場合は、「https://globalip.me/」をご確認ください。
1-6. パーミッションやファイルオーナーが違う
ファイルをFTPやその他の転送ソフトで直接アップロードした場合、ログインに使用したユーザーやそのユーザーの権限設定(umask値)により、PHP等の実行ユーザーに適切な権限がなく、エラーを引き起こす可能性があります。
この場合は、実行ユーザーに適切な権限を持たせるために、SSHやSFTPでサーバーに接続してファイルの権限確認を行ってください。なお、EC-CUBEのパーミッションの設定についてはこちらのページを参照してください。
1-7. そもそも管理画面URLがわからない
管理画面のURLがわからなくなってしまった場合、SSHやSFTPでサーバーに接続して、EC-CUBEをインストールしたディレクトリに配置されている「.envファイル」の「ECCUBE_ADMIN_ROUTE」を確認することでURLを調べることができます。
1-8. サーバーエラーが表示される
サーバーエラーが発生した場合は、エラーログを確認して原因を調べてみましょう。エラーログは「/var/log」ディレクトリに保存されています。
2. データベースに保存されているパスワードを書き換えてログインする方法
この対処方法は、一時的にセキュリティレベルを下げてしまったり、ユーザーの操作に影響を及ぼす可能性があります。ファイルやデータへの変更を加える場合は、必ず事前にバックアップを取得するなどの対策を行って、万全の体制でお試しください。内容の理解が難しい場合は、開発会社等に相談し、対応をお願いすることを強く推奨します。
問題が起きた際に、当社は一切の責任を負いかねますのであらかじめご了承ください。※有償でのサポートのみ行っております。
2-1. ステップ1:データベースのパスワードを書き換える
コマンドラインやデータベース接続クライアントツール(例:phpMyAdmin)を用いてデータベースに接続し、「dtb_member」テーブルからログインしたいユーザーの行を探してください。
ユーザー毎に暗号化されたパスワードが保存されているので、12〜50文字の一時的なパスワードに変更して保存します。本来、復号化して利用するこちらのパスワードを、そのままパスワードとして利用できるようにします。
※暗号化されたままのパスワードでは、文字数が長すぎてログインに失敗する場合があります。
2-2. ステップ2:パスワードの暗号化を無効化する設定変更
SSHやSFTPなどを利用してサーバーに接続し、「.maintenance」ファイルをサーバーのルートディレクトリに設置します。これにより、メンテナンスモードが有効化され、一般ユーザーのアクセスを遮断します。
次に、「app/config/eccube/packages/eccube.yaml」を開き、「eccube_auth_type」の値を「HMAC」から「PLAIN」に変更します。これにより、データベースに保存されているパスワードをそのまま、すなわち暗号化されたままで認証に利用できるようになります。
※この作業を行った段階で、通常のパスワードではEC-CUBEにログインができなくなります。
2-3. ステップ3:平文パスワードでログイン〜管理画面からパスワードを変更
データベースから取得したパスワードを用いて、EC-CUBEの管理画面にログインします。
ログインが完了したら、ブラウザで管理画面を開いたまま、再度「app/config/eccube/packages/eccube.yaml」を開き、「eccube_auth_type」の値を「PLAIN」から「HMAC」に戻すと共に、「.maintenance」ファイルを削除してメンテナンスモードを終了します。
管理画面にログインしている状態は保持されるので、ログインセッションが切れる前に、管理画面の「メンバー管理」から新しいパスワードに変更を行ってください。これで新しいパスワードで正常にログインできるようになります。
※「パスワード変更」からでは、現在のパスワードも変更する必要があるため、eccube_auth_typeの違いにより更新ができませんのでご注意ください
3. まとめ
今回は、EC-CUBEの管理画面にログインができなくなってしまった場合の、原因と対処方法についてご紹介しました。ログインができないといっても、その背景には様々な原因が隠れていることがあるため、根気強く原因を1つずつ探っていくことが重要です。
また記事冒頭でも説明した通り、一部の対処方法に関しては一時的にセキュリティレベルを下げてしまったり、ユーザーの操作に影響を及ぼす可能性があります。不安がある場合は、信頼できる開発会社やパートナー様に相談するようにしましょう。