2014-09-05 61 views
2

我正嘗試創建一些圖像文件的ZIP存檔。這個文件的目錄,我已經添加到一個名爲$valid的數組中。此數組中的每一項都是一個字符串,像這樣:未能創建ZIP存檔,但沒有錯誤信息

"uploads/1845_45678_862_speaker.jpg" 

這是我的代碼,我努力工作,創造所有這些物理文件的ZIP檔案:

$zip = new ZipArchive(); 
$zip_name = "ptx_speakers.zip"; 

$zip->open($zip_name, ZipArchive::CREATE); 

foreach ($valid as $zip_item) { 
    $zip->addFile($zip_item); 
} 

$zip->close(); 

然而,這是行不通的。即使打開了錯誤報告,我也只是空白屏幕。我之後嘗試了以下代碼,但是此處沒有顯示任何內容:

if (!file_exists($zip_name)) { 
    "No file." 
} 

任何人都可以在我的代碼中看到致命的缺陷嗎?如果你願意,我可以粘貼更多(比如我如何創建初始數組)。

+0

你可以在'ZipArchive'上發佈一些信息嗎?另外,你有沒有檢查你的日誌文件? – Machavity 2014-09-05 14:14:20

+0

'ZipArchive()'是一個內置的PHP類:http://uk1.php.net/manual/en/class.ziparchive.php,我也沒有訪問日誌文件... :( – mpdc 2014-09-05 14:18:31

回答

1

信不信由你,我的問題不在我的腳本里,而是在我的文件/文件夾權限中。由於我有權上傳文件,所以我認爲我可以用這個文件編寫,但不是,我不得不更新它的權限到757,然後腳本第一次起作用。

+1

Still ,你的代碼有一個缺陷,因爲它不檢查它是否可以寫入ZIP文件。如果你使用[1nflktd]的這個答案(http://stackoverflow.com/a/25688423/2629998) '有一個錯誤,告訴你關於權限問題。 – 2014-09-05 15:36:12

3

任何人都可以在我的代碼中看到致命的缺陷嗎?

是的。

$zip->open($zip_name, ZipArchive::CREATE); 

不工作,你不檢查錯誤。

它應該是這樣的

$res = $zip->open($zip_name, ZipArchive::CREATE); 
if($res){ 
    foreach ($valid as $zip_item) { 
     $zip->addFile($zip_item); 
    } 
    $zip->close(); 
} else { 
    echo "Error creating zip file: " . $res; 
} 

如果一切正常,$res將是真實的,並移動到的foreach等

如果不是,它有一個these values。檢查它,你會看到什麼是錯的。

在代碼中,你正在做

$zip->addFile($zip_item); 

但zip文件未創建,什麼會造成一定的誤差。