質問編集履歴

2

情報の追加

2016/01/18 01:38

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -302,6 +302,10 @@
302
302
 
303
303
  結果、中身の無いzipが出来上がりました。
304
304
 
305
+ ただ、zipフォルダはサイズが8KBあります。
306
+
307
+ どういう状況なのか見当がつきません。
308
+
305
309
  原因について分かることがあれば意見をお願いしたいです。
306
310
 
307
311
 

1

コード修正

2016/01/18 01:38

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -291,3 +291,75 @@
291
291
  どこが原因になっているでしょうか?
292
292
 
293
293
  よろしくお願いします。
294
+
295
+
296
+
297
+
298
+
299
+ /********* 追記 **********/
300
+
301
+ 回答してくださった方の意見を元に、コードを修正しました。
302
+
303
+ 結果、中身の無いzipが出来上がりました。
304
+
305
+ 原因について分かることがあれば意見をお願いしたいです。
306
+
307
+
308
+
309
+ ```php
310
+
311
+ $dist = 'mysite.zip'; // 生成する圧縮ファイル名
312
+
313
+ $path = './mysite'; // 圧縮するパス
314
+
315
+ $zipTmpDir = '/phpdocs/nonprothemes'; // 一時パス
316
+
317
+
318
+
319
+
320
+
321
+ $zip = new ZipArchive();
322
+
323
+ $zip->open($zipTmpDir.$dist, ZipArchive::CREATE | ZipArchive::OVERWRITE);
324
+
325
+ addZip($zip, $path);
326
+
327
+ $zip->close();
328
+
329
+
330
+
331
+ function addZip($zip, $path) {
332
+
333
+ if (is_dir($path)) {
334
+
335
+ $files = array_diff(scandir($path), ['.', '..']);
336
+
337
+ foreach ($files as $file) addZip($zip, "$path/$file");
338
+
339
+ } else {
340
+
341
+ $zip->addFile($path);
342
+
343
+ }
344
+
345
+ }
346
+
347
+
348
+
349
+ // ストリームに出力
350
+
351
+ header('Content-Type: application/zip; name="' . $dist . '"');
352
+
353
+ header('Content-Disposition: attachment; filename="' . $dist . '"');
354
+
355
+ header('Content-Length: '.filesize($zipTmpDir.$dist));
356
+
357
+ echo file_get_contents($zipTmpDir.$dist);
358
+
359
+
360
+
361
+ // 一時ファイルを削除しておく
362
+
363
+ unlink($zipTmpDir.$dist);
364
+
365
+ ```