[英]php zip file not created despite no erros, no permission problems, no empty folders, no
好的。 每個文件都存在,可讀且可寫。 ZIP不會產生任何錯誤,並輸出:“ numfiles:140 status:0”。
該代碼讀取日志,檢查特定文本,然后將許多圖像導入zip文件夾。 除了zip文件夾始終為空之外,其他所有程序都運行良好。 我已經閱讀了很多關於此的主題,並且所有這些主題都通過更改權限,修改路徑並檢查讀/寫/存在/錯誤來解決。 但是...沒有任何效果。 這是怎么回事?
<?php
$file = fopen("log.log", "r") or exit("Unable to open file!");
$zip = new ZipArchive();
$filename = "E:/Web Sites/whatever/order_stream/images.zip";
$try_file = $zip->open($filename,ZIPARCHIVE::OVERWRITE);
if ($try_file !== true) {
exit("cannot open <$filename>\n");
}
while(!feof($file)) {
$line = fgets($file);
$results = explode(": ", $line);
if ($results[0] == "Copying" || $results[0] == "File already exists, overwriting") {
$file_name = substr($results[1],19);
$to_zip = "E:/Web Sites/whatever/catalog/pictures/".$file_name;
$to_zip = trim($to_zip);
if (file_exists($to_zip)) {
$zip->addFile($to_zip);
}
}
}
echo "numfiles: " . $zip->numFiles . "\n";
echo "status:" . $zip->status . "\n";
$zip->close();
fclose($file);
?>
ZipArchive :: addFile()方法接受文件的路徑作為它的第一個參數,但是並非所有路徑都相同。 addFile()方法以靜默方式拒絕(錯誤?)文件,而您永遠不知道出了什么問題。 一種替代方法是:
// $zip->addFile($file);
$content = file_get_contents($file);
$zip->addFromString(pathinfo ( $file, PATHINFO_BASENAME), $content);
除了使代碼正常工作之外,如果您在路徑中出錯,file_get_contents()還會生成不錯的錯誤消息。 在這個例子中
$file = $full_directory_path_ending_with_slash.$filename;
由於在上面的問題中,您已經掌握了各個部分,因此代碼可以簡單地變成:
$content = file_get_contents($to_zip);
$zip->addFromString($filename, $content);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.