バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > CSVで商品更新時に商品名が勝手に変更されてしまいます。

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nac
投稿日時: 2012/3/22 21:17
対応状況: −−−
新米
登録日: 2009/10/13
居住地:
投稿: 3
CSVで商品更新時に商品名が勝手に変更されてしまいます。
現在、共用サーバーからVPSへの移行中で、フロント画面は問題なく表示が出来ていますが、
商品登録CSVでデータ更新を行った際に、商品名に「AAA BBB CCC」といった半角スペースありの名前をつけている場合、
「CCC」の部分しかDBに保存されません。(全角スペースでも同様でした。)

また、一覧-メインコメント・詳細-メインコメントの部分も文字列が記入されているにも関わらず、
未記入と言われてしまいます。

上記の問題は全て、文字列を""で囲めば回避出来ますが、見栄えがあまり良くないので、
出来れば、正常にDBを更新出来るようにしたと思います。

共用サーバーで動作している際には、このようなトラブルは発生せず、現在テスト中のVPSサーバーでのみ、
発生しているため、サーバー固有の問題だろうとは思いますが、何かお気づきの方がいらっしゃいましたら、
アドバイスをお願いします。

※PHPでエラーが発生している訳ではなく、エラーログ等は特に問題となる記述はないようでした。

[EC-CUBE]
EC-CUBE Ver2.11.4

[サーバー]
Serversman@VPS(Ubuntu 10.04.4 LTS)

[PHP]
PHP 5.3.2
※必須モジュールはインストール済み
※php.iniも極力、移行前のレンタルサーバーに合わせています。

[DB]
MySQL 5.1.61
nac
投稿日時: 2012/4/3 0:58
対応状況: −−−
新米
登録日: 2009/10/13
居住地:
投稿: 3
Re: CSVで商品更新時に商品名が勝手に変更されてしまいます。
自己レスです。

関数fgetcsvがPHP5からサーバーのロケールを取得するという
仕様になったため、サーバー側でロケールの設定を
適切に行わないと日本語の部分が消えてしまうという
現象でした。
seasoft
投稿日時: 2012/4/3 4:51
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: CSVで商品更新時に商品名が勝手に変更されてしまいます。
ざっと、EC-CUBE のソースを確認したところ、SC_Initial#phpconfigInit で、setlocale はやってあるようです。抜けパターンがあるのかもしれませんね。


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

nac
投稿日時: 2012/4/3 8:46
対応状況: −−−
新米
登録日: 2009/10/13
居住地:
投稿: 3
Re: CSVで商品更新時に商品名が勝手に変更されてしまいます。
返信ありがとうございます。

setlocale関数を今回初めて知ったため、
誤りがあればすいません。

fgetcsv関数の直前に、setlocale(LC_ALL, 'ja_JP.UTF-8');
を入れてみましたが動作しなかったので、サーバー側で対処しました。

setlocaleの解説には、「指定されたロケールが存在しない、カテゴリ名が無効などの場合は FALSE を返します。 」とありますので、
ja_JPのロケールがない場合はエラーメッセージを返すよにすればよいのではと思いますが、いかがでしょうか。
seasoft
投稿日時: 2012/4/3 9:01
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: CSVで商品更新時に商品名が勝手に変更されてしまいます。
ソースコメントによると、Windows が FALSE を返すことがあるようです。

なので、エラーとはせず、setlocale(LC_ALL, ''); としているようです。

        //ロケールを明示的に設定
        $res = setlocale(LC_ALL, LOCALE);
        if ($res === FALSE) {
            // TODO: Windows上のロケール設定が正常に働かない場合があることに暫定的に対応
            // ''を指定するとApache実行環境の環境変数が使われる
            // See also: http://php.net/manual/ja/function.setlocale.php
            setlocale(LC_ALL, '');
        }


現状、当方では本件症状に遭遇したことが無く、FALSE が返っているかも分からないのですが、もう少し情報が集まると、対応方法の目処をつけられそうですね。


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

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


 



ログイン


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

統計情報

総メンバー数は88,968名です
総投稿数は110,019件です

投稿数ランキング

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.