バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 2.12.2管理画面にログイン出来ない。

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kashii
投稿日時: 2013/1/22 12:35
対応状況: −−−
半人前
登録日: 2013/1/22
居住地:
投稿: 12
2.12.2管理画面にログイン出来ない。
お世話になります。
現在下記のサーバにEC-CUBE2.12.2をインストールしまして、
管理画面でログイン認証が出来ない状況でございます。
ご教授お願い致します。

IDとパスワード入力後、システムエラーと表示がありました。
/data/logs/error.log の内容を確認したところ

 Fatal error(E_USER_ERROR):  on [/var/www/vhosts/〇〇◯/data/class/SC_Response.php(183)] from 
login_id = 〇〇(0)[fsgjf6oi9vmsp1esisvuiau2p1]
/var/www/vhosts/〇〇〇/html/admin/index.php(34): LC_Page_Admin_Index_Ex->process
/var/www/vhosts/〇〇〇/data/class_extends/page_extends/admin/LC_Page_Admin_Index_Ex.php(56): LC_Page_Admin_Index->process
/var/www/vhosts/〇〇〇/data/class/pages/admin/LC_Page_Admin_Index.php(56): LC_Page_Admin_Index->action
/var/www/vhosts/〇〇〇/data/class/pages/admin/LC_Page_Admin_Index.php(88): SC_Response->sendRedirect
/var/www/vhosts/〇〇〇/data/class/SC_Response.php(183): trigger_error

とでておりURLが一致しなかったことによるエラーだとわかり、
調査した所

http://localhost/admin/home.php 
と 
http://◯◯◯/admin/home.php 
を比較してエラーになったというところはわかりました。

$_SERVER関数を出力したところ中身は別でSC_Response.phpのsendRedirect()の引数の$locationが参照されていました。


試しに他のプログラムファイルで$_SERVERを出力するときちんと出力されるのは確認しました。

サーバの必要なモジュールも確認しましたが、必要な情報はすべて揃っています。

【追記】
元々インストールの時点で、/html/install/index.php で
インストールのログが記録する部分(GC_Utils_Ex::gfPrintLog('WRITABLE:' . $path, INSTALL_LOG);等)で、サーバからのレスポンスが返ってこないとエラーがでており、インストールはその部分をコメントアウトで出来ました。

-------------------------------------------------------------------------------
[EC-CUBE] 2.12.2
[サーバ] さくらインターネットVPS 2G
[PHP] PHP 5.3.3
[データベース] PostgreSQL 8.4.13 on x86_64-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4), 64-bit
[OS] centos-release-6-3.el6.centos.9.x86_64
-------------------------------------------------------------------------------
shutta
投稿日時: 2013/1/22 12:47
対応状況: −−−
仙人
登録日: 2010/2/4
居住地: 関西
投稿: 835
Re: 2.12.2管理画面にログイン出来ない。
data/config/config.phpに設定されているURLと同じURLでないと、管理画面はログインできないようになっています。

config.phpのHTTP_URL、もしくはHTTPS_URLを確認して頂き、
そのURLの後に、admin/を付加したURLにて、試してみるとどうなりますでしょうか?
厳密に一致していないといけませんので、wwwあり・なしまで一致させてみて下さい。


----------------

リゾート会員権(エクシブ等)の売買・仲介

kashii
投稿日時: 2013/1/22 13:09
対応状況: −−−
半人前
登録日: 2013/1/22
居住地:
投稿: 12
config.phpのHTTP_URL、HTTPS_URLについて
ご返答ありがとうございます。
情報不足で申し訳ございません。
config.phpのHTTP_URL、HTTPS_URLで設定したURLの後に、admin/ として
アクセスしている状態ですが、ログインは出来ないです。


引用:

shuttaさんは書きました:
data/config/config.phpに設定されているURLと同じURLでないと、管理画面はログインできないようになっています。

config.phpのHTTP_URL、もしくはHTTPS_URLを確認して頂き、
そのURLの後に、admin/を付加したURLにて、試してみるとどうなりますでしょうか?
厳密に一致していないといけませんので、wwwあり・なしまで一致させてみて下さい。
shutta
投稿日時: 2013/1/22 13:48
対応状況: −−−
仙人
登録日: 2010/2/4
居住地: 関西
投稿: 835
Re: config.phpのHTTP_URL、HTTPS_URLについて
引用:

http://localhost/admin/home.php と http://◯◯◯/admin/home.php を比較してエラーになったというところはわかりました。


これは、どこを比較して分かったのでしょうか?
デバッグの過程を記載して頂けると、助かります。

あと、本来正しい(config.phpに記載しているURL)のは、上記2つのURLのどちらの方でしょうか?


----------------

リゾート会員権(エクシブ等)の売買・仲介

kashii
投稿日時: 2013/1/22 13:59
対応状況: −−−
半人前
登録日: 2013/1/22
居住地:
投稿: 12
比較対象のURLとデバッグ内容について
ご返答ありがとうございます。
下記の通り、1つずつ返答させて頂きました。

引用:

shuttaさんは書きました:
引用:

http://localhost/admin/home.php と http://◯◯◯/admin/home.php を比較してエラーになったというところはわかりました。


これは、どこを比較して分かったのでしょうか?
デバッグの過程を記載して頂けると、助かります。

■比較箇所について
A. /data/class/SC_Response.php の183行目のsendRedirect()の処理の部分で

        // アプリケーション外へのリダイレクトは扱わない
        if (preg_match($pattern, $url) === 0) {
            trigger_error('', E_USER_ERROR);
        }

preg_match()で$patternと$urlで比較しているところでわかりました。

■デバッグの過程について
A.管理画面のログイン認証したあとにシステムエラーが表示されたので、/data/logs/error.log で先程記載させて頂きました、
ログの内容を見て使われている変数の出力を調べました。
_________________________________________
引用:

あと、本来正しい(config.phpに記載しているURL)のは、上記2つのURLのどちらの方でしょうか?

A.
後者のほうで、http://◯◯◯/admin/home.php になります。
shutta
投稿日時: 2013/1/22 16:00
対応状況: −−−
仙人
登録日: 2010/2/4
居住地: 関西
投稿: 835
Re: 比較対象のURLとデバッグ内容について
引用:

■比較箇所について
A. /data/class/SC_Response.php の183行目のsendRedirect()の処理の部分で

        // アプリケーション外へのリダイレクトは扱わない
        if (preg_match($pattern, $url) === 0) {
            trigger_error('', E_USER_ERROR);
        }

preg_match()で$patternと$urlで比較しているところでわかりました。


$patternの方に、

http://◯◯◯/admin/home.php

、$urlの方に、

http://localhost/admin/home.php

の記載があったという感じでしょうか?

もしくは、その逆のパターン、どちらになりますか?


----------------

リゾート会員権(エクシブ等)の売買・仲介

kashii
投稿日時: 2013/1/22 16:15
対応状況: −−−
半人前
登録日: 2013/1/22
居住地:
投稿: 12
比較箇所について
ご返答ありがとうございます。
情報不足で申し訳ございません。
以下、お答えさせて頂きます。

引用:

shuttaさんは書きました:
引用:

■比較箇所について
A. /data/class/SC_Response.php の183行目のsendRedirect()の処理の部分で

        // アプリケーション外へのリダイレクトは扱わない
        if (preg_match($pattern, $url) === 0) {
            trigger_error('', E_USER_ERROR);
        }

preg_match()で$patternと$urlで比較しているところでわかりました。

比較箇所について

$patternの方に、

http://◯◯◯/admin/home.php

、$urlの方に、

http://localhost/admin/home.php

の記載があったという感じでしょうか?

もしくは、その逆のパターン、どちらになりますか?


$patternの方に
/^(http\:\/\/〇〇◯\/|http\:\/\/〇〇◯\/)/

$urlの方に、
http://localhost/admin/home.php

でなっております。


shutta
投稿日時: 2013/1/22 17:15
対応状況: −−−
仙人
登録日: 2010/2/4
居住地: 関西
投稿: 835
Re: 比較箇所について
お手数ですが、以下確認してもらえますか?

・EC-CUBEのADMIN_HOME_URLPATH定数の出力結果

適当な場所で、

var_dump(ADMIN_HOME_URLPATH);

を差し込んで確認。

通常であれば、
/admin/home.php
とかが設定されているはずです。


・$urlの値がlocalhostに差し替わる場所の特定
手始めに、SC_Response.phpのsendRedirect()にて、


        // url-path → URL 変換
        if ($location[0] === '/') {
            $netUrl = new Net_URL($location);
            $location = $netUrl->getUrl();
        }


の前に、

var_dump($location);


後ろに、

var_dump($location);
exit;


を差し込んで出力内容を確認。

上記、デバッグコードを差し込んだ上で、管理画面のログインをすると、$locationの値が該当コードの前後で差し替わっているか確認できるかと思いますので、お手数ですが確認お願いします。


----------------

リゾート会員権(エクシブ等)の売買・仲介

kashii
投稿日時: 2013/1/22 17:34
対応状況: −−−
半人前
登録日: 2013/1/22
居住地:
投稿: 12
$urlの値がlocalhostに差し替わる場所の特定について
ご回答いただきありがとうございます。
出力内容は以下の通りです。


引用:

・EC-CUBEのADMIN_HOME_URLPATH定数の出力結果

A. string(15) "/admin/home.php"

引用:

・$urlの値がlocalhostに差し替わる場所の特定
手始めに、SC_Response.phpのsendRedirect()にて、


        // url-path → URL 変換
        if ($location[0] === '/') {
            $netUrl = new Net_URL($location);
            $location = $netUrl->getUrl();
        }


の前に、

var_dump($location);


A. string(15) "/admin/home.php"
引用:

後ろに、

var_dump($location);
exit;


A. string(31) "http://localhost/admin/home.php"


という結果になりました。
_______________________________________



        // url-path → URL 変換
        if ($location[0] === '/') {
            $netUrl = new Net_URL($location);
            $location = $netUrl->getUrl();
        }

で、参照先を調べた所、/data/module/Net/URL.php の164行目で $this->host に代入した値を、


            $location = $netUrl->getUrl();

から返している動きをしていると思います。

Net_URL::initialize()で

$HTTP_SERVER_VARS  = !empty($_SERVER) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS'];

の$_SERVER変数の内容をvar_dumpで出力したところ

array(1) { [0]=> &string(15) "/admin/home.php" }

となり、

$this->host        = !empty($host) ? $host : (isset($HTTP_SERVER_VARS['SERVER_NAME']) ? $HTTP_SERVER_VARS['SERVER_NAME'] : 'localhost');


で、$this->host == "localhost" という結果になりました。
shutta
投稿日時: 2013/1/22 18:24
対応状況: −−−
仙人
登録日: 2010/2/4
居住地: 関西
投稿: 835
Re: $urlの値がlocalhostに差し替わる場所の特定について
引用:

$_SERVER変数の内容をvar_dumpで出力したところ

array(1) { [0]=> &string(15) "/admin/home.php" }

となり、


上記、$_SERVERの出力内容が怪しいような気がします。

恐らくですが、PHPがCLI版で動作していませんか?
CLI版だと_SERVERの中身にEC-CUBEの動作に必要なものが含まれなくなるかと思います。

モジュール版もしくはCGI版(SAPI)で動作していないと、うまく動かないと思いますので、そのあたり確認して見て下さい。


----------------

リゾート会員権(エクシブ等)の売買・仲介

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


 



ログイン


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

統計情報

総メンバー数は88,860名です
総投稿数は109,996件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1294
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.