2013-05-11 16 views
0

我創建了下面的代碼創建一個zip文件創建一個zip文件。我根據$ job_number(我從全局的$ _GET數組中獲取)從數據庫中提取文件列表,然後嘗試將它們添加到zip文件中。不能與PHP

這部分工作正常。它從數據庫中提取文件列表,正如我通過print_r回顯或傾銷結果所看到的。

唯一的問題是沒有建立在所有的.zip文件。我看不出我出錯的地方。

$sth = $conn->prepare('SELECT `dp_filename` FROM damage_pics WHERE dp_job_number = :job_number'); 
$sth->bindParam(':job_number', $job_number); 
$sth->setFetchMode(PDO::FETCH_ASSOC); 
$sth->execute(); 

$zip = new ZipArchive(); 
$zip->open('example5.zip', ZipArchive::CREATE); 
$result = $sth->fetchAll(); 


echo '<pre>'; 
print_r($result); 

foreach ($result as $file) 
{ 
    // just echoing for testing purposes to see if file name is created correctly. 
    $image = $file['dp_filename']; 
    echo $image . "<br />"; 
    $zip->addFile("uploads/{$image}"); 
} 

$zip->close(); 
+0

你在哪裏保存zip文件?該目錄是否可寫? – pregmatch 2013-05-11 12:42:32

+0

確保ZipArchive安裝在您的PHP版本上。 – 2013-05-11 12:59:04

回答

1

聽起來像你的PHP腳本正在運行,沒有足夠的權限寫入目標目錄。我做了一些嘗試,在這種情況下,$ zip-> open()調用會默默地失敗,並且沒有指出哪裏出了問題。

你可以把下面的代碼頂部,以確定這確實是問題:

$fp = fopen('example5.zip', 'w'); 
if ($fp === FALSE) { die("Cannot open example5.zip for writing"); } 
fclose($fp); 

要解決這個問題,我會建議使用絕對路徑和文件名(如/ tmp /例5 .zip),然後確保執行腳本的用戶可以寫入目標目錄(可能無論用戶運行的是HTTP服務器軟件,例如www-data或httpd,具體取決於操作系統和發行版)。