zipファイルを作成する機能があります。
function zipDoc($docRoot,$archiveName,$testsFolder){
$filename = tempnam($testsFolder, "doc");
$cwd=getcwd();
chdir ($docRoot);
if (is_writeable($docRoot)){
echo $docRoot." is writeable";
}
$zip = new ZipArchive();
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
exit("cannot open <$filename>\n");
}
echo "<br/>";
if (is_writeable(dirname($filename))){
echo dirname($filename)." is writeable";
}
$folders = array ("_rels","docProps","word");
// initialize an iterator
// pass it the directory to be processed
foreach ($folders as $folder){
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder."/"));
// iterate over the directory
// add each file found to the archive
foreach ($iterator as $key=>$value) {
if (!is_readable($key)){
echo "File ".$key." not readeble";
}
$zip->addFile(realpath($key), $key) or die ("ERROR: Could not add file: $key");
}
}
$zip->addFile("[Content_Types].xml");
// close and save archive
echo "<br/>";
if ($zip->close()){
echo $filename." is Closed";
}
else{
echo $filename." is not closed";
}
$newname=str_replace(".tmp",".docx",$filename);
rename($filename,$newname);
chdir($cwd);
return $newname;
}
出力は、両方のフォルダーが書き込み可能であり(ファイルシステムでもそれを確認しました)、zipファイルが閉じられていないことです!!! 何か提案がありますが、なぜそれが閉じないのですか?編集:close()メソッド呼び出し後のファイルのステータスは3670068です。関数renameは、ファイルが別のプロセスによって使用されていることを示しています。ファイルは作成されますが、0kbです。