バージョン選択

フォーラム

メニュー

オンライン状況

50 人のユーザが現在オンラインです。 (40 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 50
もっと...

サイト内検索

バグ報告 > その他 > ログインを押すと、Not Found 。

その他

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
motohira
投稿日時: 2009/2/27 9:32
対応状況: 解決済
新米
登録日: 2009/2/27
居住地:
投稿: 1
Re: ログインを押すと、Not Found 。
横から失礼します。新米のmotohiraです。
私もログインの時とログアウト時の「Forbidden」に悩まされていましたが、その方法で解決しました。

ありがとうございました。
ramrun
投稿日時: 2008/9/3 11:33
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: ログインを押すと、Not Found 。
とりあえずコミュ版はおいといて。
2.1.2aでのwin phpのHTML_PATH生成の不具合は、2.3.0rc1のadachiさんの修正で直っていますよ?
tags/eccube-2.3.0-rc1/html/install/index.php

ですので問題はgetRootPathの部分だと思うのですが...

仮に

HTML_PATH x:\www\eccube\html\/

になってしまったとしても

$realPath = str_replace("\\", "/", $realPath);
$htmlPath = str_replace("\\", "/", HTML_PATH);

$htmlPath = rtrim($htmlPath, "/");
$rootPath = str_replace($htmlPath, "", $realPath);
$rootPath = ltrim($rootPath, "/");

を通せばOKになります。

あとは2.1.2aを直すのかどうかですよね。
seasoft
投稿日時: 2008/9/3 10:02
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: ログインを押すと、Not Found 。
修正したのは、
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=thread&topic_id=2104&forum=1&post_id=9938#forumpost9938
で oimo様より、ご指摘を頂いた部分に関してでした。

LC_Page.php の getRootPath() に関しては、何をしているのか把握していませんが、OSやバージョンによる分岐をせずに、ストレートに流せる処理は良いと思います。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

para4
投稿日時: 2008/9/3 9:58
対応状況: −−−
常連
登録日: 2008/6/30
居住地:
投稿: 42
Re: ログインを押すと、Not Found 。
引用:


つぎにpara4さんの
引用:
HTML_PATHから余計な文字を削除するようにした方がいいと思う

ですが、ようするにHTML_PATHよりもrealpathが返す文字列が同じか、長くないと置換(削除)できないわけで。
ところがPHPのバージョンによってrealpathの最後の"/"が付いたり付かなかったりするから、HTML_PATHよりも短い場合がでてしまうと。
ではそれに合わせてHTML_PATHも変化させるの? といわれるとなんだかわかりづらいような気がします。



紛らわしい書き方ですみません。
・顧客のログインと
・管理者画面へのログインと
二つの議論が書かれているので、話が合わなかったと思います。

余計な文字と言ったのは、oimoさんの投稿で
install.php のHTML_PATHで(D:\HP\ec_cube\/)の様になっていたので、最後のスラッシュが余計なので、install.phpを生成するときに、つけないようにした方が良いということでした。

と、ここまで書いて気が付きましたが、私が試した範囲(v2.1.2,v2.3.0-rc)では、HTML_PATHに円マークはなくすべてスラッシュに置き換わっていますね。
環境の違いでしょうか...

$rootPathの生成については、ramrunのコードがスマートですね。

ramrun
投稿日時: 2008/9/3 8:21
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: ログインを押すと、Not Found 。
書き方が悪かったようですね(汗)。
直っていない=以前と一緒です。

その例でいくと
HTML_PATH W:\www\eccube\html/
$realPath W:\www\eccube\html

となります。

これはLC_Page.phpのgetRootPathより

if (substr(PHP_OS, 0, 3) == 'WIN') {
    $realPath = str_replace("\\", "/", $realPath);
    $htmlPath = str_replace("\\", "/", HTML_PATH);
    $rootPath = str_replace($htmlPath, "", $realPath);
} else {
    $htmlPath = rtrim(HTML_PATH, "/");
    $rootPath = str_replace($htmlPath, "", $realPath);
    $rootPath = ltrim($rootPath, "/");
}


青字の部分で
HTML_PATH W:/www/eccube/html/
$realPath W:/www/eccube/html

に直され、やはり赤字の部分でマッチしません。

そもそも、最後に"/"が付いたり付かなかったりしているのは$realPath側で、EC-CUBEの各バージョンをしっかりチェックしていませんが、HTML_PATHについては最後に必ず"/"をつけるようになっていませんか?

なので動的にHTML_PATHを生成するとなると、

win PHP5.2.5では
HTML_PATH W:/www/eccube/html/

win PHP5.2.6では
HTML_PATH W:/www/eccube/html

としないと$realPathとマッチしません。

私はHTML_PATH側を変化させるのがわかりづらいと思ったので、winでもUNIX系でも関係なく、LC_Page.phpのgetRootPathで↓のように処理したほうがいいのではないのかなぁと思った次第です。
$realPath = str_replace("\\", "/", $realPath);
$htmlPath = str_replace("\\", "/", HTML_PATH);

$htmlPath = rtrim($htmlPath, "/");
$rootPath = str_replace($htmlPath, "", $realPath);
$rootPath = ltrim($rootPath, "/");

seasoft
投稿日時: 2008/9/3 1:34
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: ログインを押すと、Not Found 。
> まず、seasoftさんのr17586はWIN&PHP5.2.6では直っていませんでした。

後で WIN&PHP5.2.5 でテストしたところOKだったのですが、
WIN&PHP5.2.6 はテスト環境がなく試せていません。

HTML_PATH がどのようになっているか教えていただければ、追跡できると思います。
http://svn.ec-cube.net/open_trac/changeset/17587 で削除したデバッグコードを復元すれば確認できると思います。

ちなみに、WIN&PHP5.2.5 では
X:\www\html/
のような感じになります。


> 2.3.0rc1とcomu-ver2ではHTML_PATHを作る処理が違うみたいですね。
> なんかわかりづらい(汗)。

comu-ver2 側は動的に生成するように変更しています。
いずれは、正式版に取り込んでもらえる品質になればよいのですが、まだ道のりありそうですね。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

ramrun
投稿日時: 2008/9/3 0:39
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: ログインを押すと、Not Found 。
まず、seasoftさんのr17586はWIN&PHP5.2.6では直っていませんでした。

つぎにpara4さんの
引用:
HTML_PATHから余計な文字を削除するようにした方がいいと思う

ですが、ようするにHTML_PATHよりもrealpathが返す文字列が同じか、長くないと置換(削除)できないわけで。
ところがPHPのバージョンによってrealpathの最後の"/"が付いたり付かなかったりするから、HTML_PATHよりも短い場合がでてしまうと。
ではそれに合わせてHTML_PATHも変化させるの? といわれるとなんだかわかりづらいような気がします。

LC_Page.phpのgetRootPathを

// HTML_PATH を削除した文字列を取得.
// FIXME OS依存の処理は別クラスに分ける?
// Windowsの場合は, ディレクトリの区切り文字を\から/に変換する
if (substr(PHP_OS, 0, 3) == 'WIN') {
    $realPath = str_replace("\\", "/", $realPath);
    $htmlPath = str_replace("\\", "/", HTML_PATH);
    $rootPath = str_replace($htmlPath, "", $realPath);
} else {
    $htmlPath = rtrim(HTML_PATH, "/");
    $rootPath = str_replace($htmlPath, "", $realPath);
    $rootPath = ltrim($rootPath, "/");
}

から

// HTML_PATH を削除した文字列を取得.
// Windowsの場合は, ディレクトリの区切り文字を\から/に変換する
$realPath = str_replace("\\", "/", $realPath);
$htmlPath = str_replace("\\", "/", HTML_PATH);

$htmlPath = rtrim($htmlPath, "/");
$rootPath = str_replace($htmlPath, "", $realPath);
$rootPath = ltrim($rootPath, "/");

にすれば、変に条件を付けずにいけると思うんですが。

2.3.0rc1とcomu-ver2ではHTML_PATHを作る処理が違うみたいですね。
なんかわかりづらい(汗)。
para4
投稿日時: 2008/9/2 11:15
対応状況: −−−
常連
登録日: 2008/6/30
居住地:
投稿: 42
Re: ログインを押すと、Not Found 。
data/install.phpのHTML_PATHから余計な文字を削除するようにした方がいいと思うのですが。

HTML_PATHのdefine場所が複数あると分かりずらいと思います。
para4
投稿日時: 2008/9/1 16:12
対応状況: −−−
常連
登録日: 2008/6/30
居住地:
投稿: 42
Re: ログインを押すと、Not Found 。
ramrun 様

とりあえず、私は次のように直しました。

data/class/pages/LC_Page.php
254行目

変更前
$realPath = str_replace("\\", "/", $realPath) ;
変更後
$realPath = str_replace("\\", "/", $realPath) . "/";

ちゃんと、最後が"/"かどうか見てから追加するのがきれいなんでしょうけど、実害はないようなので...


seasoft
投稿日時: 2008/8/29 23:46
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: ログインを押すと、Not Found 。
とりあえず、r17586,r17587 として oimo 様ご指摘の不具合に対応する改修を行ってみました。

テスト環境(PHP 5.2.4-5.2.5 Win)がある方、お試しください。

一応、他のバージョンへは影響ないように配慮したつもりですが…


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

(1) 2 3 4 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,000名です
総投稿数は110,020件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.