質問 > 管理機能 > 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 はやってあるようです。抜けパターンがあるのかもしれませんね。
|
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, ''); としているようです。
現状、当方では本件症状に遭遇したことが無く、FALSE が返っているかも分からないのですが、もう少し情報が集まると、対応方法の目処をつけられそうですね。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |