バグ報告 > 管理機能 > DirectoryIndex index な環境で管理画面にログインできない |
管理機能
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
mosh |
投稿日時: 2013/5/15 21:07
対応状況: −−−
|
新米 登録日: 2013/5/15 居住地: 投稿: 3 |
DirectoryIndex index な環境で管理画面にログインできない [EC-CUBE] 2.12.3
[レンタルサーバ] さくらのレンタルサーバー スタンダードプラン [OS] FreeBSD (バージョン不明) [PHP] 5.2.x [データベース] MySQL5.5 [WEBサーバ] Apache 1.3.x [ブラウザ] Firefox 17.0.6 ESR [現象] 管理画面にログインできない。 EC-CUBE を使ってみようと思い、インストールしたところ、管理画面にログインしようとすると 「ログイン認証の有効期限切れの可能性があります。もう一度ご確認のうえ、再度ログインしてください。」というエラーになりログインできないという現象が起こりました。 私のサイトでは Multiviews を使っているため、.htaccess で
という設定を行なっているのですが、これをコメントアウトすると問題は発生しなくなりました。 原因を探ろうと EC-CUBE のソースコードを調べてみたところ、
この部分で
が "/eccube/html/admin/index.php" のようになりますが、 $_SERVER['SCRIPT_NAME'] には "/eccube/html/admin/index" という拡張子が含まれないパスが設定されているためマッチせず、正しく動作しないようです。 DirectoryIndex index の設定をした場合、なぜか環境変数 SCRIPT_NAME に設定されるファイル名の拡張子がなくなってしまうようです。 例えば、.htaccess に DirectoryIndex index と書いた状態で以下のようなスクリプトを実行すると、 /hoge/index という文字列が出力されます。
Webブラウザでアクセスする URI を admin/ で終わらせるのではなく、admin/index.php と拡張子まで含めて指定すれば、SCRIPT_NAME も admin/index.php となり正しく動作します。 なお、手元の Debian GNU/Linux unstable でも同様に試してみましたが、問題は再現しませんでした。 さくらのレンタルサーバーで使用している Apache のバグなのか、PHP のバグなのか、それとも EC-CUBE で対処すべき問題なのか分からないのですが、他に同様の原因ではまる人がいらっしゃるかもしれませんし、フォーラムにはそのような報告はまだ無いようなので、一応ご報告させていただきました。 # ところで、おせっかいかもしれませんが、preg_match に渡すパターン ROOT_URLPATH . ADMIN_DIR . $exclude は、できれば preg_quote などでエスケープした方が安全な気がします。 |
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
» DirectoryIndex index な環境で管理画面にログインできない | mosh | 2013/5/15 21:07 |
Re: DirectoryIndex index な環境で管理画面にログインできない | mosh | 2013/5/22 20:35 |
Re: DirectoryIndex index な環境で管理画面にログインできない | AMUAMU | 2013/5/23 0:45 |
Re: DirectoryIndex index な環境で管理画面にログインできない | mosh | 2013/5/28 14:07 |
Re: DirectoryIndex index な環境で管理画面にログインできない | AMUAMU | 2013/5/28 14:35 |