簡體   English   中英

盡管沒有錯誤,也沒有創建php zip文件,沒有權限問題,沒有空文件夾,沒有

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM