処理対象のファイルがある時にZipをOpen()すればエラーはなくなりますがあまりスマートではありません。
処理対象ファイルの存在を確認せずに処理する方が違和感があります。
PHP
1//データがあればZipに追加する
2if(file_exists($img_save_path.$savename)){
3 $zip->open($zip_file, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
4 $zip->addFile($img_save_path.$savename,$savename);
5 $zip->close();
6}
単純に、warning/errorの出力を抑止したいだけならエラー制御演算子の@
で抑止する。
追記:
何らかの処理中にzipに格納するファイルが確定しかつ複数あるのであれば、先にまとめて存在チェックを行ってから処理する方法もあります。
PHP
1// 処理対象のファイル
2$img_save_path = '/tmp/';
3$targetfiles = array(
4 array('filename' => 'file01.txt', 'savename' => 'file01.txt'),
5 array('filename' => 'file02.txt', 'savename' => 'file02.txt'),
6 array('filename' => 'file03.txt', 'savename' => 'file03.txt')
7);
8
9// 処理対象のファイルの存在チェックを行い、存在するもののみのリストを作成
10$existsfiles = array();
11foreach($targetfiles as $targetfile){
12 if (file_exists($img_save_path.$targetfile['filename'])) {
13 $existsfiles[] = $targetfile;
14 } else {
15 echo 'file not found : ' . $img_save_path.$targetfile['filename'] . PHP_EOL;
16 }
17}
18
19// 存在するもののみのリストにしたがってzipを作成
20if (count($existsfiles) > 0) {
21 $zip->open($zip_file, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
22 foreach($existsfiles as $targetfile){
23 $zip->addFile($img_save_path.$targetfile['filename'], $targetfile['savename']);
24 }
25 $zip->close();
26} else {
27 echo 'did not create a zip file.' . PHP_EOL;
28}
29
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/05 07:00
2017/01/05 07:45