2013-05-11 7 views
0

다음 코드를 작성하여 zip 파일을 생성했습니다. $ job_number (전역 $ _GET 배열에서 가져 오는)에 따라 데이터베이스에서 파일 목록을 가져온 다음 zip 파일에 추가하려고합니다.PHP로 zip 파일을 만들 수 없습니다

그 부분은 잘 작동합니다. 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

+0

PHP 버전에 ZipArchive가 설치되어 있는지 확인하십시오. –

답변

1

PHP 스크립트와 같은 소리가 대상 디렉토리에 쓸 수있는 권한으로 실행되고 있습니다. 나는 약간의 실험을했고, 그런 상황에서 $ zip-> open() 호출은 무엇이 잘못되었는지에 대한 표시없이 조용히 실패 할 것이다. 이것은 참으로 문제가있는 경우

당신은 결정하기 위해 맨 위에 다음 코드를 넣을 수 있습니다 :

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

가 나는 절대 경로와 파일 이름을 (사용 제안, 문제를 해결하려면 예 :/tmp를/예 5 등 .zip) 그런 다음 스크립트를 실행하는 사용자가 대상 디렉토리에 쓰기 권한이 있는지 확인하십시오 (OS 및 배포판에 따라 www-data 또는 httpd와 같은 HTTP 서버 소프트웨어를 실행하는 사용자가 될 가능성이 높음).

관련 문제