teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

情報の追加

2016/01/18 01:38

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -150,6 +150,8 @@
150
150
  /********* 追記 **********/
151
151
  回答してくださった方の意見を元に、コードを修正しました。
152
152
  結果、中身の無いzipが出来上がりました。
153
+ ただ、zipフォルダはサイズが8KBあります。
154
+ どういう状況なのか見当がつきません。
153
155
  原因について分かることがあれば意見をお願いしたいです。
154
156
 
155
157
  ```php

1

コード修正

2016/01/18 01:38

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -144,4 +144,40 @@
144
144
  ```
145
145
 
146
146
  どこが原因になっているでしょうか?
147
- よろしくお願いします。
147
+ よろしくお願いします。
148
+
149
+
150
+ /********* 追記 **********/
151
+ 回答してくださった方の意見を元に、コードを修正しました。
152
+ 結果、中身の無いzipが出来上がりました。
153
+ 原因について分かることがあれば意見をお願いしたいです。
154
+
155
+ ```php
156
+ $dist = 'mysite.zip'; // 生成する圧縮ファイル名
157
+ $path = './mysite'; // 圧縮するパス
158
+ $zipTmpDir = '/phpdocs/nonprothemes'; // 一時パス
159
+
160
+
161
+ $zip = new ZipArchive();
162
+ $zip->open($zipTmpDir.$dist, ZipArchive::CREATE | ZipArchive::OVERWRITE);
163
+ addZip($zip, $path);
164
+ $zip->close();
165
+
166
+ function addZip($zip, $path) {
167
+ if (is_dir($path)) {
168
+ $files = array_diff(scandir($path), ['.', '..']);
169
+ foreach ($files as $file) addZip($zip, "$path/$file");
170
+ } else {
171
+ $zip->addFile($path);
172
+ }
173
+ }
174
+
175
+ // ストリームに出力
176
+ header('Content-Type: application/zip; name="' . $dist . '"');
177
+ header('Content-Disposition: attachment; filename="' . $dist . '"');
178
+ header('Content-Length: '.filesize($zipTmpDir.$dist));
179
+ echo file_get_contents($zipTmpDir.$dist);
180
+
181
+ // 一時ファイルを削除しておく
182
+ unlink($zipTmpDir.$dist);
183
+ ```