symfony2のfilesystemのcopyが正常に動かない
symfony2のfilesystemのcopyを利用してzipファイルをAディレクトリからBディレクトリに移動させる(どちらも同サーバー内)必要があったためその処理を追加したことで不可解なエラーが起こります。
発生している問題・エラーメッセージ
Failed to copy (hoge) to (piyo)
該当のソースコード
php
1// 複数ファイルの時はここをループ 2$finder = new Finder(); 3$fs = new FileSystem(); 4$fs->remove($finder->in($dirPath)->files()); // 出力ディレクトリ内のファイル全削除 5$fs->copy($originFile,$targetFile);
試したこと
zipファイルのサイズが300MBのとき -> 問題なく動作
zipファイルのサイズが1.8GBのとき -> 問題なく動作
zipファイルが2つありサイズが1.8GBと400MB程度のとき -> 問題なく動作
zipファイルが2つありサイズが1.8GBと950MB程度のとき -> 上記エラー文(最初に移動を予定された1.8GBのzipファイルの方で落ちていました)
FileSystemのソースをみたところ
php
1// Class FileSystem 2public function copy($originFile, $targetFile, $override = false) 3{ 4 ・・・ 5 // ここでエラーになっていました 6 if(!is_file($targetFile)) { 7 throw new IOExeption(sprintf('Failed to copy "%s" to "%s"', $originFile, $targetFile)); 8 } 9}
移動先ディレクトリにはファイルは作成されておりましたが全てがコピーされておらず途中で終了しているようでした。
試したことにも記載しているとおり複数ファイルが存在しても動作しているのですが、2ファイル目以降が大きくなりすぎると途中でコピーが終了していました。
上記メソッド内で利用されているstream_copy_to_streamの動作に関しても調べたのですが、メモリが関係しているようでもなさそうでした。
原因をご存知の方、ご返答よろしくお願い致します。
補足情報
PHP 7.0.33
Symfony 2.7.4
回答1件
あなたの回答
tips
プレビュー