ZipArchive を使用しています。
function zip_dir($source, $target){
$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($source, \FilesystemIterator::SKIP_DOTS), \RecursiveIteratorIterator::SELF_FIRST);
$zip = new \ZipArchive();
if($zip->open($target, \ZipArchive::CREATE) !== true)
exit('cannot create zip');
foreach($iterator as $file){
$zip->addFile($file);
print $file . '<br>';
}
$zip->close();
return $target;
}
zip_dir(__DIR__ . '/test/', __DIR__ . '/testarchive.zip');
ファイルの一覧は見えるのですが、結局作成したはずのzipファイルが見つかりません。そして、ZipArchive からエラー/例外は発生しません...
編集:
print $zip->getStatusString();
後に追加しました$zip->close();
そして、それは出力します:ファイルを開くことができません:許可が拒否されました」。それはどういう意味ですか?私は確かにすべてのディレクトリが書き込み可能であることを知っています.bc私はそれらの中にPHPを含む新しいファイルを作成できます...
編集2:
if(is_writable(dirname($target)))
print 'target dir is writable...';
それを出力するので、dirは書き込み可能です。トワイライトゾーンにいるような気がします...