バグ報告 > 管理機能 > DirectoryIndex index な環境で管理画面にログインできない |
管理機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
AMUAMU |
投稿日時: 2013/5/28 14:35
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: DirectoryIndex index な環境で管理画面にログインできない なるほどmoshさんの指摘の点、理解できました。失礼いたしました。
確かに発生する可能性を未然に抑えるためには指定があったほうが良いかもです。 一方で多様な環境で動くよう.htaccessでの記述を可能な限り減らそう、依存するのは止めようと言う試みもあるので相反するんですよね DirectoryIndexはさすがに大抵の環境でもOKだと思いますが、ここらへんはポリシー的なものだからどうなんだろうな・・・ ※今の.htaccessはphp関連の設定だけなので、ある意味すっきりしている
|
mosh |
投稿日時: 2013/5/28 14:07
対応状況: −−−
|
新米 登録日: 2013/5/15 居住地: 投稿: 3 |
Re: DirectoryIndex index な環境で管理画面にログインできない いえいえ、そういう事ではなく、EC-CUBE の html/.htaccess で DirectoryIndex ディレクティブを明示的に指定していないと、EC-CUBE の他の部分や、サードパーティ製のプラグインなどで同様の(SCRIPT_NAME環境変数のパスが拡張子を含んでいない事に起因する)問題が発生する可能性があるのではないだろうか?と思ったのです。
あくまで「問題が起きる可能性を減らす」ということであって、現時点で実際に問題が発生する事が分かっているわけではありません。「できれば指定しておいた方がいいんじゃないかな〜。」くらいの感じです。 |
AMUAMU |
投稿日時: 2013/5/23 0:45
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: DirectoryIndex index な環境で管理画面にログインできない 2.12.4並びに2.12.3以下への修正差分として22日にリリースされた内容では処理自体が変わっているため、同様の事象は起きないと思いますので、DirectoryIndexは特に関係無くなると思います。
|
mosh |
投稿日時: 2013/5/22 20:35
対応状況: −−−
|
新米 登録日: 2013/5/15 居住地: 投稿: 3 |
Re: DirectoryIndex index な環境で管理画面にログインできない EC-CUBE の svn HEAD にて、上で報告した DirectoryIndex index な環境でも正しく管理画面にログインできるようになった事を確認致しました。
どうもありがとうございました。 ところで、SCRIPT_NAME 環境変数が拡張子を含まない(実在しない)パスを指していると、またどこかで SCRIPT_NAME を参照する際にいちいちそれを考慮しなければならず面倒なような気がするので、html/.htaccess に DirectoryIndex index.php と明示的に書いておくと SCRIPT_NAME が実在しないパスを指している可能性を排除でき、安全なような気がします。
|
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 などでエスケープした方が安全な気がします。 |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |