最後にいたる前に不正なアクセスといわれる。

あってはいけないミス・・・・・・。

買い物途中、最後の最後で、「不正なアクセスです」と言われるようです。
FireFoxでそんなことになりました。

以下を参考にしています。

買い物処理途中での「不正なアクセスです。」とのエラー

でも、これ、相当・・・・・・あっちゃいけないミスでは。しまったなぁ。

csvでのダウンロードとアップロード。クォートの不具合。

EC-CUBEはcsvでダウンロードし、csvでアップロードができます。

csvダウンロードしたとき、タグに「”(ダブルクオーツ)」を使っているとその前に「\(←円マーク)」いわゆるエスケープキーがついて来ます。

このデータをcsvアップロードでアップロードすると、エスケープキーで入れたはずの円マークが、テキストとして登録されます。

もしくは、このcsvをエクセルで変更した場合、エスケープキーのはずの円マークがテキストになってしまいます。

その結果、円マークはエスケープではなくて、テキストとして解釈されます。

このデータを再びcsvでダウンロードした場合、円マークはエスケープキーが付きます。
この繰り返しで、どんどんとエスケープキーが付いたりしていきます。

これをなんとかしたい・・・・・・。

admin\products\index_csv.php

のL156あたりに、

$tmp = str_replace(“\””, “\\\“”, $tmp);(\は円マーク)

という記述がありますので、それを以下のように変えます。

switch($key) {
ツꀀツꀀツꀀcase ‘main_comment’:
ツꀀツꀀツꀀcase ‘sub_comment1’:
ツꀀツꀀツꀀcase ‘sub_comment2’:
ツꀀツꀀツꀀcase ‘sub_comment3’:
ツꀀツꀀツꀀcase ‘sub_comment4’:
ツꀀツꀀツꀀcase ‘sub_comment5’:
ツꀀツꀀツꀀcase ‘sub_comment6’:
ツꀀツꀀツꀀツꀀ$tmp = str_replace(“\””, “‘”, $tmp);
ツꀀツꀀツꀀツꀀbreak;
ツꀀツꀀツꀀdefault:
ツꀀツꀀツꀀツꀀ$tmp = str_replace(“\””, “\\\“”, $tmp);
ツꀀツꀀツꀀ}

タグで使った”を’に変えるための変更です。

ちなみに、改行コードを消す(タグのところで改行を使っている場合)のは下記。
この改行コード、CSVだと邪魔なのです。(1行が1レコードというつくりが崩れるから)

ツꀀツꀀ//▼
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ $line = str_replace(“\n\r”,””, $line);
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ $line = str_replace(“\r”,””, $line);
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ $line = str_replace(“\n”,””, $line);
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ //▲

バックアップ時に真っ白になる

バックアップ時に真っ白になる。

下記アドレス参考

http://warumono.at.webry.info/200703/article_18.html

しかし、直らない。
ラ○○○サイトでは、なぜか、いつもメモリが足りなくなるんだよね。
結構高いサービス使ってるのになぁ。
httpdデーモンがいっぱいで、アパッチの再起動をしなけりゃいけなくなることがあります。
なぜ!!

再起動してみようと思ったけど、たぶん、作業中なのでできない。
また明日の早い時間帯にやってみようと思うけど、何かあったときにラ○○○サイトが対応してくれないんだな。

こまったなー。

【後日談】

ラ○○○サイトのカスタマーサポートからメールでお返事いただきました。
メモリが足りないよちも、memory_limitの関係ではないかと。

php.iniをコントロールパネルで書き換えて、アパッチの再起動をかけたらうまくいくようになりました。
ちなみに、memory_limitの数値は倍にしました。

件名(subject)やFromやToが文字化けする件

「お問い合わせ」「会員登録」「受注メール」の件名やFromやToが文字化けする。
つまりヘッダーに含まれる日本語が文字化けしているのだと思うのだけど、MicrosoftOutlookだと文字化けしないのに、OutlookExpressだと文字化けしてします。

文字コードがUTF8なのを、OutlookExpressが許さないのかなぁとも思いつつ、詳しい理由はつきとめられなかった。

その回避方法

EC-CUBE開発コミュニティサイトより
文字化け

data\class\GC_SendMail.php

L.29

$name = mb_encode_mimeheader($name);

↓↓↓↓↓

$name = mb_encode_mimeheader(mb_convert_encoding($name, “JIS”, CHAR_CODE), “ISO-2022-JP”);

L.65

$this->subjectツꀀツꀀ = mb_encode_mimeheader($subject);

↓↓↓↓↓

$this->subjectツꀀツꀀ = mb_encode_mimeheader(mb_convert_encoding($subject, “JIS”, CHAR_CODE), “ISO-2022-JP”);

L.79

$this->header.= “From: “. mb_encode_mimeheader( $from_name ).”<“.$fromaddress.”>\n”;

↓↓↓↓↓

$this->header .= “From: “. Mb_encode_mimeheader( $from_name, “ISO-2022-JP” ).”<“.$fromaddress.”>\n”;

という感じ。

商品CSVで商品説明文に改行コードが含まれる不具合

EC-CUBEは、商品をcsvで一括変更できるが、このcsvをダウンロードしたとき、商品説明に改行コードが含まれていると1商品1行にならずに不具合が起こる。

タグを使い、改行をせずに文章を入れることが必要だが、一覧リストコメントにいたっては、タグが許可されていなくて、改行コードを<br>に変換する機能がついているのに、なんだか面倒なことだ。

csvデータの途中に改行コードが含まれるなら、途中で削除してしまえばよい。

admin\products\index_csv.php
L137あたりにあるlfMakeProductsCSV関数を変更する。

// 文末の”,”を変換
$line = ereg_replace(“,$”, “\n”, $line);

の上に下記コードを加える。

//▼文の改行コードを全て変更する
$line = str_replace(“\n\r”,””, $line);
$line = str_replace(“\r”,””, $line);
$line = str_replace(“\n”,””, $line);

\は円マークです。

もっとスマートなコードがある気はするが、とりあえず・・・・・・。

商品登録csvで大量エラー

商品登録csvを使用。参照ボタンでcsvファイルを選んだ後、登録すると別窓が出て、進行状況が表示されるのだが、今回はそれがおこらず真っ白のままだった。

おかしいなと思いながら、サーバの容量を見るとみるみるうちに、10GBのディスク容量が埋まっていく。わーまずい!と無理やりアパッチ再起動。とりあえず、5GBのエラーを書き出して止まった。

なぜこんなことが起こったのか。

調べてみると、csvはいちど、uploads/csv/というところに入る。このcsvの権限がまずかったよう。

今回のサーバでは、そのフォルダのユーザやグループはApacheになっている。
たぶんインストール時に生成されるのと、safemodeとかいろいろ聞きかじったけど、ちょっとよくわかってない。
uploads以下はすべてApacheになっている。
で、このuploadsにはsave_imageというフォルダがある。ここに商品の写真データが入っている。
一括で登録するため、まず最初にこちらに商品の写真データをいれる必要があった。
Apacheになっていると、FTPソフトからのアップロードを受け付けてくれないため、ユーザーを変更していた。普通は、save_imageだけのユーザを変更すればよい。しかし、このsave_imageにはすでに6000点ほどの写真データが入っている。だから、管理画面でsave_imageを開き、そこだけユーザを変えるということができなかった。

もう一つ上位のuploadsのユーザーを変更し、その下のフォルダやデータもその変更に則するという風にしないとうまくいかなかった。だから、その時点で、uploads/csvもユーザがapacheから普通のユーザに代わってしまっていた。

それを忘れていて、登録csvを動かしたから、パーミッションエラーが延々と書き出されてしまったのである。

5GB。

とりあえず、この5GBのエラーを管理画面から削除した。FTPからは消せない。rootじゃないからね。

だけど、まだ5GB使用していますというような表示がされている。ファイルは見当たらないのに・・・・・・。これが解決しないと、あらたにcsvを登録する気力がない。怖い。

サポートにメールで問い合わせ中。追ってこちらに追加したい。

(2008.05.23追記)

どうも、ファイル管理画面からダウンロードしようとしたときに、しきれなかったようで、
/h****/*******/.cpx_tmp/*******.download
というファイルでサーバに残っていた。

FFFTPでも、3時間かかった5GBのエラーデータ。
ファイル管理画面からダウンロードって本当にできたんだろうか・・・・・・?

商品一括登録で、商品ステータスは8文字以内でとはじかれる。

代の通り、商品一括登録時に、「商品ステータスは8文字以内で」と怒られる。
confファイルでいくらでも増やせるし、実際にcsvを使った登録でなければ登録されるのに・・・・・・。

ツꀀadmin\products\upload_csv.phpのL170あたり。

function lfInitParam()以降がCSVでの項目とチェックの仕方になっているので、この

$objFormParam->addParam(“商品ステータス”, “product_flag”, INT_LEN, “n”, array(“EXIST_CHECK”,”MAX_LENGTH_CHECK”,”NUM_CHECK”));

から、「”MAX_LENGTH_CHECK”,」を削除します。

※追記(2008.5.8)
この8字以内の理由がわかった。今回、お客様の要望で23個に増やしたのだけど、23個ということは、数字は23桁となる。
csvでダウンロード後、エクセルで開くと桁数丸められちゃって消えちゃうんですよ。
23桁の数字って、100垓。(だと思う)
そりゃ、あんまり使わないですよね。

商品ステータスは、あんまり増やさないように提案しなくちゃいけないなと思いました。

ラピッドサイトにPostgreSQLをインストール

ラピッドサイトのRV-731にPostgreSQLをインストールする流れ

telnetを使用。ラピッドサイトはコントロールパネルからシェルアクセスでtelnetにつなぐことが出来る。
このときユーザー名とパスワードは、rootでないものを使う。

管理者ユーザで入ったあと、

su root

でrootユーザで入る。パスワードはrootのパスワード

その後、

/etc/init.d/postgresql start
Starting postgresql service: [ OK ]

これで、PostgreSQLが起動

ユーザーを追加する。

su postgres ※ここでパスワードを聞かれた場合は、mysqlパスワードと同じものを入れる
$ createuser -W
Enter name of user to add: PGUSER
Shall the new user be allowed to create databases? (y/n) n
Shall the new user be allowed to create more new users? (y/n) n
Password: ********
CREATE USER

注意点は、passwordにルールがあること。何文字以上で、数字を含むというようなことかもしれない。
mysqlのパスワードを参考に作ると良い。

あとは、ここが大変参考になりました!!

postgreSQL基本操作ツꀀ マロンくん.NET 本当にわかりやすかった。ありがとうございました!

で、posgreのデータベースを使ってECCUBEをインストールしかけたけど、UTFの文字コードで何かが引っかかっちゃった。
うーん・・・・・・一筋縄ではいきません。

ということで、データベースを作るときに、文字コードをEUC-JPに指定してみることにします。
そのコマンドは、「Notes for administration – PostgreSQL-Tips」を参考にしました。

createdb -E エンコーディング名 データベース名

これでうまくインストールできました。

インストールが進まない

インストールを始めて、お店名をいくら入れても「入ってません」といわれてしまいます。

おそらく、文字化けしちゃって受け取られかけてるからかなと。
半角英数ならいけるんだけど…・・・。

ということで、文字化け対策。

2.0.1のインストール後の管理画面の一部文字化けについて を参考に、
data\class\SC_DbConn.php の L33以降に追加。

$this->dsn = $dsn;
$buf = $objDbConn->prepare(‘SET NAMES binary’);
$objDbConn->execute($buf);

次に、.htaccessの以下の部分を変更

php_flag mbstring.encoding_translation 0

データベースを次のクエリ文で作成
create database eccube14 charset ujis;(utf8のときはujisをutf8に)

データベースの文字コードをujisで作った場合 ―>OK  phpmyadminでも文字化けせずに閲覧が可能
データベースの文字コードをutf8で作った場合ツꀀ―>OKツꀀ  phpmyadminでは文字化け

また、utf8で上記の場合、再度入れたときに文字化けする。
「data\class\SC_DbConn.php の L33以降に追加」をやめて、それ以外のところだけ適応するとよいかもしれない。