バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > カテゴリCSV一括登録でシステムエラー発生

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
saimei1
投稿日時: 2020/6/13 14:10
対応状況: −−−
半人前
登録日: 2019/6/3
居住地:
投稿: 15
カテゴリCSV一括登録でシステムエラー発生
▼テンプレート
[EC-CUBE] 4.02
[レンタルサーバ] localマシン
[OS] Mac OS X 10.14.6
[PHP] 7.1.26
[データベース] MariaDB 10.1.37
[WEBサーバ] Apache/2.4.37
[ブラウザ] safari 、edge、firefox
[導入プラグインの有無] なし
[カスタマイズの有無] なし
[現象]
カテゴリCSV一括登録でCSVファイルを指定して一括登録を実行させると
システムエラーが発生し、管理者へ連絡するようにというメッセージが表示される
デバッグモードにしてログを表示させたところ下記のようなメッセージが表示される

Warning: fwrite() expects parameter 1 to be resource, boolean given

in Eccube/Controller/Admin/AbstractCsvImportController.php (line 66)
} $file = StringUtil::convertLineFeed($file); $tmp = tmpfile(); fwrite($tmp, $file); rewind($tmp); $meta = stream_get_meta_data($tmp); $file = new \SplFileObject($meta['uri']); set_time_limit(0);

AbstractCsvImportController->getImportData(object(UploadedFile))
in Eccube/Controller/Admin/Product/CsvImportController.php (line 555)
$form->handleRequest($request); if ($form->isValid()) { $formFile = $form['import_file']->getData(); if (!empty($formFile)) { log_info('カテゴリCSV登録開始'); $data = $this->getImportData($formFile); if ($data === false) { $this->addErrors(trans('admin.common.csv_invalid_format')); return $this->renderWithError($form, $headers, false); }




のように表示されます
問題、解決方法などわかれば教えていただけないでしょうか?
CSVファイルに問題があるのかと思い項目名だけのファイルを送って
見ても同様のエラーになります
また、Windows10上で立ち上げたローカル環境で同じことを行なったら
データ項目がないなどのメッセージが返ってくるなどがありましたが
問題の環境ではそれ以前のところでエラーが発生しているようです
よろしくお願いします
468
投稿日時: 2020/6/15 10:05
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: カテゴリCSV一括登録でシステムエラー発生
Eccube/Controller/Admin/AbstractCsvImportController.php (line 66)
の箇所を確認すると
fwrite($tmp, $file);

の記述があるのですが
$tmpにfalseが入ってきていないでしょうか?

直前で
$tmp = tmpfile();

によってテンポラリファイルを作成しようとしていますが
何かしらの理由でテンポラリファイルに作成に失敗するとfalseが返ってくるかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

saimei1
投稿日時: 2020/6/15 14:41
対応状況: 確認中
半人前
登録日: 2019/6/3
居住地:
投稿: 15
Re: カテゴリCSV一括登録でシステムエラー発生
ご返信ありがとうございます

>$tmpにfalseが入ってきていないでしょうか?
すみません$tmpに何か入ってきているかはどのように
確認すればいいでしょうか?
一応デバッグモードにするとログが表示されることは
わかったのですが、変数などの情報もデバックモードの画面で
確認できるのでしょうか?

>テンポラリファイルを作成しようとしていますが
何かしらの理由でテンポラリファイルに作成に失敗するとfalseが返ってくるかと思います。

テンポラリファイルが作成される場所はどこになるのでしょうか?
それらしい場所を探してみたところ
var/cache/dev/dev/eccubeにupload_*****.csvというファイルがあり開いてみると送った一括登録用のcsvファイルでした
キャッシュとテンポラリファイルは別ということでしょうか?

すみません、不慣れなためアドバイスいただければ助かります
よろしくお願いします

468
投稿日時: 2020/6/16 11:48
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: カテゴリCSV一括登録でシステムエラー発生
dump($tmp);
等で中身を確認する事が出来るのではないかと思います。
デバッグモードの場合、画面にオブジェクトの内容が表示されるかと思います。

>テンポラリファイルが作成される場所はどこになるのでしょうか?
/tmpなどOSで用意されている一時ディレクトリを利用していると思われます。

アップロードしたCSVを保存しているキャッシュはECCUBEでの機能かと思いますが
テンポラリファイル[tmpfile()]はPHPレベルでの機能となりますので別物という認識で良いかと思います。
tmpfile()はファイルの新規作成から利用が終るとファイルの削除まで勝手に行ってくれるという便利な関数なので
使い分けはファイルを残す必要があるかどうかではないかと思います。

ただtmpfile()が利用できないという話はあまり聞いた事がなく、
仮に利用できないというのであればサーバ環境の問題になってくるのではないかと思います。

もしかしたら第2引数の$fileが問題を抱えているのかもしれませんが...


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

saimei1
投稿日時: 2020/6/17 14:07
対応状況: −−−
半人前
登録日: 2019/6/3
居住地:
投稿: 15
Re: カテゴリCSV一括登録でシステムエラー発生
ご返信ありがとうございます

>dump($tmp);
等で中身を確認する事が出来るのではないかと思います。
デバッグモードの場合、画面にオブジェクトの内容が表示されるかと思います。

ちょっと内容ややり方がわからなかったのですがとりあえずソースのAbstractCsvImportController.phpの該当箇所に下記のようにコードを追加して見ましたが、エラー表示画面に表示はされていません
$tmp = tmpfile();
dump($tmp);<<追加コード
dump($file);<<追加コード
fwrite($tmp, $file);

あまり知識がなくて申し訳ないのですが、デバッグモードで画面が表示されるとはどういうことなのでしょうか?
画面下にsfというボタンのようなものがあってそれを開くといくつかのメニュー項目が出て
きますがそれを使うのでしょうか?


>/tmpなどOSで用意されている一時ディレクトリを利用していると思われます。
php.iniに下記のように指定されていましたupload_tmp_dir="/Applications/XAMPP/xamppfiles/temp/"
ここをブランクにするとCSVファイル選択時に一時フォルダがphp.iniで設定されていない
というメッセージが表示されます
書き込み権限などを指定したり、フォルダを変更したりしてもエラーは変わりませんでした

とりあえず、というような状況なのですが...
何かアドバイス等ありましたらよろしくお願いします
saimei1
投稿日時: 2020/6/17 23:48
対応状況: −−−
半人前
登録日: 2019/6/3
居住地:
投稿: 15
Re: カテゴリCSV一括登録でシステムエラー発生
デバッグモードでオブジェクトを表示するのと違うと思いますが、ちょっと強引なやり方で
下記のようにexitコードを追加して無理やり停止させたところなんとか内容表示できました
$tmp = tmpfile();
dump($tmp);<<追加コード
dump($file);<<追加コード
exit;<<追加コード
fwrite($tmp, $file);

出力結果
AbstractCsvImportController.php on line 66:
false
AbstractCsvImportController.php on line 67:
"カテゴリID,カテゴリ名,親カテゴリID,カテゴリ削除フラグ\n"

やはり、テンポラリファイルの作成に失敗しているようです
CSVファイル自体はアップロードできていて項目名は取得されています

何かアドバイス等あればよろしくお願いします
468
投稿日時: 2020/6/18 9:44
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: カテゴリCSV一括登録でシステムエラー発生
macにXAMPPで環境を作られているのでしょうか?
私はwindowsOSでしかXAMPP環境は使ったことがないので、よく分かりませんが
パーミッション関連で何かあるのではないかと思うのですが
sys_get_temp_dir()を実行して、一時ファイルを保存する場所を確認されてみては如何でしょうか?
多分、返り値でテンポラリディレクトリのパスが返ってくると思います。

php.iniのupload_tmp_dirはファイルアップロード時(アップロードしたCSVや画像ファイル)を一時的に格納するディレクトリで
tmpfile()とは関係の無いディレクトリになるかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

saimei1
投稿日時: 2020/6/18 21:38
対応状況: 解決済
半人前
登録日: 2019/6/3
居住地:
投稿: 15
Re: カテゴリCSV一括登録でシステムエラー発生
返信ありがとうございます
とりあえずシステムエラーは発生しないようになりました
以下その経過をお知らせします

下記コードを作成し、テンポラリファイルの作成先を確認
$tmp = tmpfile();
if ($tmp==false)
{
print sys_get_temp_dir();
}
else{
print $tmp;
}


出力結果
/var/folders/3k/gk92pg_901d2s_2m7vk6bgr00000gn/T

/var/folders/3k/gk92pg_901d2s_2m7vk6bgr00000gn/Tがテンポラリファイルを作成する先の模様

chmodでアクセス権の変更をしようとしたが拒否されてしまう
sudo chmod 777 /var/folders/3k/gk92pg_901d2s_2m7vk6bgr00000gn/T
chmod: Unable to change file mode on /var/folders/3k/gk92pg_901d2s_2m7vk6bgr00000gn/T: Operation not permitted

良くわかりませんがphpのテンポラリファイル作成先だけではなく色々な用途に使われているみたいなので別のフォルダへ変更することを検討
phpinfo()の情報にsys_temp_dirという項目がありここがブランクになっていることに気づき、php.iniに下記を追加してみる(upload_tmp_dirの内容と同じ)
sys_temp_dir=/Applications/XAMPP/xamppfiles/temp/

Apacheを再起動して項目名だけのカテゴリ一括登録ひな形CSVファイルをアップロードして一括登録を実行
データがありませんというメッセージが表示されるがシステムエラーは発生せず
という状況です

初めに構築していたwinodwsマシンが貧弱なノートP Cだったので適当なものがなく
Macで構築してみました
データ移行とかの練習になると思いCSV一括登録をやろうとしてつまずいてしまっていた
ことろです
とりあえずはシステムエラーが発生しなくなったので先に進めそうです
アドバイスありがとうございました
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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