バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 2.0.1 商品登録CSV error_logが無限ループ

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ゲスト
投稿日時: 2008/2/10 23:34
対応状況: −−−
2.0.1 商品登録CSV error_logが無限ループ
お世話になっております。
以下の環境で2.0.1の構築を行っております。

EC-CUBEバージョン:2.0.1
PHP情報 :4.3.9
DB:MySQL 4.1.20

ファーストサーバ、プロビジネスサービス
「Virtuozzo」による仮想化されたroot権限で、PLESKで区切ったドメイン上にインストールしています。

インストール後、管理画面の商品登録CSVからCSVファイルを読みこもうとした際に、進捗状況を示す小さなウインドウがポップアップした後、延々とエラーログが出るようです。

下記の過去ログを見ると、1.3.0ではパーミッションエラーに属するものが出たときに永久ループでエラーログが出るとの事ですが、
2.0.1でも、出るようです。

http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=1205&forum=11&post_id=4104#forumpost4104

商品登録CSV機能を使用した際に関係のあるディレクトリやファイルについて、どなたかアドバイスをいただけないでしょうか?

/html/upload/ は 777
/html/upload/csv やその他ディレクトリは 755

その他にも必要な情報がございましたらご指導下さい。
宜しくお願い致します。
ramrun
投稿日時: 2008/2/11 1:54
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: 2.0.1 商品登録CSV error_logが無限ループ
多分これかな?

チケット #203 (new バグ指摘) 商品登録CSVの不具合
http://svn.ec-cube.net/open_trac/ticket/203



こんな機能も開発されたみたいなので、必要なら。

チケット #236 (new 新規開発) CSVからカテゴリを登録
http://svn.ec-cube.net/open_trac/ticket/236


既知の不具合はトラックに載ってます(フォーラムに報告された全てじゃないけど)。

未解決チケット(バージョン別)
http://svn.ec-cube.net/open_trac/report/2
ゲスト
投稿日時: 2008/2/11 9:55
対応状況: −−−
Re: 2.0.1 商品登録CSV error_logが無限ループ
ご返信いただきありがとうございます。

商品登録CSVの不具合は確認致しましたが、現象は解決出来ませんでした。

error_logの件なのですが、20GBのレンタルスペース全てが埋まるまでエラーログが出ております。

1.x系でも出ているようですので、原因が分かると良いのですが・・・。

商品CSVをエクスポートしようとしても、実行出来ない状態だと分かりましたので、やはり何らかのパーミッションの問題だと考えております。

777が必要なファイル、フォルダが確認出来ると良いのですが、もう少し自身でチェックしてみようと思います。

ありがとうございました。

ramrun
投稿日時: 2008/2/11 11:26
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: 2.0.1 商品登録CSV error_logが無限ループ
お役に立たなかったようで(汗)。

ちなみにそのerror_logというのは、ゲストさんが貼ったリンク先と同じものなんですか?

suEXECのエラーがでてるの?

C'S SERVER
http://2nd.cssv.jp/detail/hom12.html
ゲスト
投稿日時: 2008/2/11 20:51
対応状況: −−−
Re: 2.0.1 商品登録CSV error_logが無限ループ
エラーログのループが途中で止められず20GB近くのログが開けなかったため、ログの確認をせずに質問してしまいました。
失礼しました。ループしはじめた時点で強制的にPLESKを停止してログを小さめに抑えて内容を確認し、解決することが出来ましたので、ご報告させていただきます。

ログを確認しました所、
商品登録CSVの実行時に /data/class/xxxx.php で html/upload/xxxx へのパーミッションが許可されていないというログでしたので、
/html/upload/以下のディレクトリのパーミッションが755から777に変更しましたところ、ループせずに動作致しました。
※進捗の表示される小窓の文字が文字化けしてしまいますが、エンコードをUTF-8にして確認した所、動作には問題ないようです。

正しい結論か自信はないのですが、インストール時に自動作成されるディレクトリやファイルの所有者が、
ユーザー権限ではなく、apache権限になってしまう環境の場合、インストールが完了したように見えていても、パーミッションがおかしくなるようです。
これはxbitでも同様の現象が起こります。

具体的には、
html/upload/以下の全てのディレクトリ・ファイル
html/user_data/以下の全てのディレクトリ・ファイル
data/Smarty/templates_c/以下の全てのディレクトリ・ファイル
などで、apache 所有のフォルダが出来て、パーミッション設定がうまくいかないようです。

※今回の環境では、tar.gz をSSH からtar zxvfp eccube-2.0.1.tar.gz で解凍しています。
 また、apacheが所有者のディレクトリ・ファイルは全て、ユーザー権限に変更済みです。
 PLESKのドメイン権限では非公開領域にフォルダを作成出来なかったため、root権限でdataフォルダを公開領域外につくり、vhosts.confでopen_basedirの設定をしています。
 下記のようなディレクトリ構成です。
 /var/www/vhosts/
   └hogehoge.jp
     └httpdocs(公開領域)
     └data(非公開領域)

商品登録CSVで出るerror_logは下記(文章最後部)のものです。
[client xxx.xxx.xxx.xxx] PHP Warning: feof():・・・ から
[client xxx.xxx.xxx.xxx] PHP Warning: fwrite(): ・・・ が何万行かループしています。

以下error_log

[client xxx.xxx.xxx.xxx] PHP Warning: copy(/var/www/vhosts/hogehoge.jp/httpdocs/upload/temp_image//02111829_47b01568ac815.csv): failed to open stream: Permission denied in /var/www/vhosts/hogehoge.jp/data/class/SC_UploadFile.php on line 110, referer: http://www.hogehoge.jp/admin/products/upload_csv.php
[client xxx.xxx.xxx.xxx] PHP Warning: fopen(/var/www/vhosts/hogehoge.jp/httpdocs/upload/temp_image//02111829_47b01568ac815.csv): failed to open stream: No such file or directory in /var/www/vhosts/hogehoge.jp/data/class/util/SC_Utils.php on line 1019, referer: http://www.hogehoge.jp/admin/products/upload_csv.php
[client xxx.xxx.xxx.xxx] PHP Warning: fopen(/var/www/vhosts/hogehoge.jp/httpdocs/upload/csv/enc_02111829_47b01568ac815.csv): failed to open stream: Permission denied in /var/www/vhosts/hogehoge.jp/data/class/util/SC_Utils.php on line 1024, referer: http://www.hogehoge.jp/admin/products/upload_csv.php
[client xxx.xxx.xxx.xxx] PHP Warning: feof(): supplied argument is not a valid stream resource in /var/www/vhosts/hogehoge.jp/data/class/util/SC_Utils.php on line 1026, referer: http://www.hogehoge.jp/admin/products/upload_csv.php
[client xxx.xxx.xxx.xxx] PHP Warning: fgets(): supplied argument is not a valid stream resource in /var/www/vhosts/hogehoge.jp/data/class/util/SC_Utils.php on line 1027, referer: http://www.hogehoge.jp/admin/products/upload_csv.php
[client xxx.xxx.xxx.xxx] PHP Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/vhosts/hogehoge.jp/data/class/util/SC_Utils.php on line 1029, referer: http://www.hogehoge.jp/admin/products/upload_csv.php
[client xxx.xxx.xxx.xxx] PHP Warning: feof(): supplied argument is not a valid stream resource in /var/www/vhosts/hogehoge.jp/data/class/util/SC_Utils.php on line 1026, referer: http://www.hogehoge.jp/admin/products/upload_csv.php
[client xxx.xxx.xxx.xxx] PHP Warning: fgets(): supplied argument is not a valid stream resource in /var/www/vhosts/hogehoge.jp/data/class/util/SC_Utils.php on line 1027, referer: http://www.hogehoge.jp/admin/products/upload_csv.php
[client xxx.xxx.xxx.xxx] PHP Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/vhosts/hogehoge.jp/data/class/util/SC_Utils.php on line 1029, referer: http://www.hogehoge.jp/admin/products/upload_csv.php
[client xxx.xxx.xxx.xxx] PHP Warning: feof(): supplied argument is not a valid stream resource in /var/www/vhosts/hogehoge.jp/data/class/util/SC_Utils.php on line 1026, referer: http://www.hogehoge.jp/admin/products/upload_csv.php
[client xxx.xxx.xxx.xxx] PHP Warning: fgets(): supplied argument is not a valid stream resource in /var/www/vhosts/hogehoge.jp/data/class/util/SC_Utils.php on line 1027, referer: http://www.hogehoge.jp/admin/products/upload_csv.php
[client xxx.xxx.xxx.xxx] PHP Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/vhosts/hogehoge.jp/data/class/util/SC_Utils.php on line 1029, referer: http://www.hogehoge.jp/admin/products/upload_csv.php

お騒がせし、失礼致しました。
ramrun
投稿日時: 2008/2/12 12:51
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: 2.0.1 商品登録CSV error_logが無限ループ
引用:
エラーログのループが途中で止められず

そういうことでしたか。

引用:
正しい結論か自信はないのですが、インストール時に自動作成されるディレクトリやファイルの所有者が、ユーザー権限ではなく、apache権限になってしまう環境の場合、インストールが完了したように見えていても、パーミッションがおかしくなるようです。


safe_modeがonのサーバーですね。
パーミッションがおかしくなるわけではなくて、所有者のチェックが厳しくなるため、結果的にパーミッションもいじることになります。

PHP Manual:セーフモード
http://www.php.net/manual/ja/features.safe-mode.php
ゲスト
投稿日時: 2008/2/12 15:41
対応状況: −−−
Re: 2.0.1 商品登録CSV error_logが無限ループ
PLESKの管理画面上でドメインの定義をする際に以下のような選択チェックがあり、safe_mode も、OFFの状態でECCUBEをインストールしているのです・・・。

hogehoge.jp のドメイン定義画面
 PHP対応 【チェックボタンを入れた状態】 
 (PHP の 'safe_mode' を有効(On)にする 【チェックボタンを外した状態】)

この問題は、apache権限で作成されてしまうディレクトリ・ファイルの所有権の変更とパーミッションをの変更だけですので、たいした問題ではないのですが、ログがループするのは厳しいですね。

インストール後に管理画面でパーミッションや所有権のチェック等ができる【システム診断】機能があるとうれしいです。
ramrun
投稿日時: 2008/2/13 21:09
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: 2.0.1 商品登録CSV error_logが無限ループ
ちょっとはずしてばかりで気になったので調べてみました(汗)。


まず、/html/install/index.phpにて
    // 権限エラー等が発生していない場合
    if(!$err_file) {
        $path = ".." . HTML2DATA_DIR . "Smarty/templates_c/admin";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = ".." . HTML2DATA_DIR . "Smarty/templates_c/mobile";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = "../upload/temp_template";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = "../upload/save_image";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = "../upload/temp_image";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = "../upload/graph_image";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = "../upload/mobile_image";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = "../upload/csv";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = ".." . HTML2DATA_DIR . "downloads/module";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = ".." . HTML2DATA_DIR . "downloads/update";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $mess.= ">> ○:アクセス権限は正常です。<br>";
    }

こんな感じでディレクトリを作ってます。

mkdir($pach)のようにmodeを指定しないと、デフォルトでは0777になるようです。

PHP Manual:mkdir
http://jp.php.net/mkdir

で、mkdirはumaskの影響を受けるので、umaskが0022だと0755でディレクトリが作成されてしまいます。

そのあとに/data/class/util/SC_Utils.phpでファイルのコピーなどするのですが
    // ディレクトリ以下のファイルを再帰的にコピー
    function sfCopyDir($src, $des, $mess = "", $override = false){
        if(!is_dir($src)){
            return false;
        }

        $oldmask = umask(0);
        $mod= stat($src);

        // ディレクトリがなければ作成する
        if(!file_exists($des)) {
            if(!mkdir($des, $mod[2])) {
                print("path:" . $des);
            }
        }

        $fileArray=glob( $src."*" );

        foreach( $fileArray as $key => $data_ ){
            // CVS管理ファイルはコピーしない
            if(ereg("/CVS/Entries", $data_)) {
                break;
            }
            if(ereg("/CVS/Repository", $data_)) {
                break;
            }
            if(ereg("/CVS/Root", $data_)) {
                break;
            }

            mb_ereg("^(.*[\/])(.*)",$data_, $matches);
            $data=$matches[2];
            if( is_dir( $data_ ) ){
                $mess = SC_Utils::sfCopyDir( $data_.'/', $des.$data, $mess);
            }else{
                if(!$override && file_exists($des.$data)) {
                    $mess.= $des.$data . ":ファイルが存在します\n";
                } else {
                    if(@copy( $data_, $des.$data)) {
                        $mess.= $des.$data . ":コピー成功\n";
                    } else {
                        $mess.= $des.$data . ":コピー失敗\n";
                    }
                }
                $mod=stat($data_ );
            }
        }
        umask($oldmask);
        return $mess;
    }

こちらではumaskをいったん0にして、処理後に元に戻すなんて処理をしているようです。

ですからinstallのindex.phpも
    // 権限エラー等が発生していない場合
    if(!$err_file) {
        $oldmask = umask(0);
        $path = ".." . HTML2DATA_DIR . "Smarty/templates_c/admin";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = ".." . HTML2DATA_DIR . "Smarty/templates_c/mobile";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = "../upload/temp_template";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = "../upload/save_image";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = "../upload/temp_image";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = "../upload/graph_image";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = "../upload/mobile_image";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = "../upload/csv";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = ".." . HTML2DATA_DIR . "downloads/module";
        if(!file_exists($path)) {
            mkdir($path);
        }
        $path = ".." . HTML2DATA_DIR . "downloads/update";
        if(!file_exists($path)) {
            mkdir($path);
        }
        umask($oldmask);
        $mess.= ">> ○:アクセス権限は正常です。<br>";
    }

としてやれば、ゲストさんの状況にも対応するはずです。

また、/data/class/SC_Initial.phpも同様です。
    /**
     * 各種キャッシュディレクトリを生成する.
     *
     * Smarty キャッシュディレクトリを生成する.
     *
     * @access protected
     * @return void
     */
    function createCacheDir() {
        if (defined("HTML_PATH")) {
            $oldmask = umask(0);
            if (!file_exists(COMPILE_DIR)) {
                mkdir(COMPILE_DIR);
            }

            if (!file_exists(MOBILE_COMPILE_DIR)) {
                mkdir(MOBILE_COMPILE_DIR);
            }

            if (!file_exists(COMPILE_ADMIN_DIR)) {
                mkdir(COMPILE_ADMIN_DIR);
            }

            if (!file_exists(COMPILE_FTP_DIR)) {
                mkdir(COMPILE_FTP_DIR);
            }
            umask($oldmask);
        }
    }
ramrun
投稿日時: 2008/2/13 21:28
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: 2.0.1 商品登録CSV error_logが無限ループ
別件ですが、上記を調べるときに気づいたので書いておきます。

safe_modeがonでPHPをモジュール版で動作させているとき、インストールのファイルコピーで
Warning: mkdir() [function.mkdir]: Unable to access ../user_data/bkup/ in /hogehoge/eccube/data/class/util/SC_Utils.php on line 1410
path:../user_data/bkup/
Warning: Invalid argument supplied for foreach() in /hogehoge/eccube/data/class/util/SC_Utils.php on line 1416

というワーニングがでます。

PHP Manual:mkdir [the difference being, the trailing slash "/" after "extra_large.]
http://jp.php.net/manual/ja/function.mkdir.php#73848

どうもsafe_modeがonのときはパスが/で終わるのがよろしくないような?

またInvalid argument supplied for foreach()はエラー行の前にあるglobで配列を取得できなかった場合にfalseを返すので引っかかっているようです。

/data/class/SC_Utils.php
        if(!($fileArray=glob( $src."*" ))) {
            $fileArray = array();
        }
        foreach( $fileArray as $key => $data_ ){
            // CVS管理ファイルはコピーしない
            if(ereg("/CVS/Entries", $data_)) {
                break;
            }
            if(ereg("/CVS/Repository", $data_)) {
                break;
            }
            if(ereg("/CVS/Root", $data_)) {
                break;
            }

            mb_ereg("^(.*[\/])(.*)",$data_, $matches);
            $data=$matches[2];
            if( is_dir( $data_ ) ){
                $mess = SC_Utils::sfCopyDir( $data_.'/', $des.$data, $mess);
            }else{
                if(!$override && file_exists($des.$data)) {



/data/class/SC_Initial.php
    function createCacheDir() {
        if (defined("HTML_PATH")) {
            $oldmask = umask(0);
            if (!file_exists(COMPILE_DIR)) {
                mkdir(substr(COMPILE_DIR,0,-1));
            }

            if (!file_exists(MOBILE_COMPILE_DIR)) {
                mkdir(substr(MOBILE_COMPILE_DIR,0,-1));
            }

            if (!file_exists(COMPILE_ADMIN_DIR)) {
                mkdir(substr(COMPILE_ADMIN_DIR,0,-1));
            }

            if (!file_exists(COMPILE_FTP_DIR)) {
                mkdir(substr(COMPILE_FTP_DIR,0,-1));
            }
            umask($oldmask);
        }
    }


safe_modeがonだと、どのみち途中で引っかかるのですが...(汗)。
ゲスト
投稿日時: 2008/2/13 23:03
対応状況: −−−
Re: 2.0.1 商品登録CSV error_logが無限ループ
詳しく調べていただきありがとうございます。
今週末にご提案いただいた内容で実験してみます。
また、ご報告させていただきます。
取り急ぎお礼まで。
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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
1290
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.