PHP가

2010-05-17 12 views
4

인 ZIP 파일에서 빈 디렉토리를 제거하면 class for ZIP file manipulation이됩니다. 또한 addEmptyDir()을 사용하여 디렉토리를 만들고 deleteName()을 사용하여 항목을 삭제할 수 있습니다. 그러나 삭제는 디렉토리 (비어 있거나 없음)에서 작동하지 않습니다. ZIP 파일에서 빈 폴더를 삭제하는 방법이 있습니까? (PHP 빌드 기능이 필요합니까?)PHP가

+0

버그처럼 보입니다. – Artefacto

+0

이것이 어떤 차이를 만들지는 모르겠지만 deleteIndex() 함수를 사용해 보셨습니까? – defines

답변

1

디렉터리 이름에 /을 추가해야합니다. 그래서,이 같은 작품 : 그래서

<?php 
    $zip = new ZipArchive; 
    if ($zip->open('test.zip') === TRUE) { 
     $zip->deleteName('testDir/'); 
     $zip->close(); 
    } 
?> 

, testdir에/testdir에 대 .... 디렉토리의 개념에 대한

+0

참고 : 공식 문서를 이와 같은 예를 사용하여 업데이트하고 설명을 위해 확장 관리자에게 질문했습니다. –

+0

deleteName()에 더 많은 문제가있는 것 같습니다. 비어 있지 않은 디렉토리를 삭제하려고 시도하지만 삭제하지 않으면 True를 반환합니다. Btw. 디렉토리의 locateName()은 후행 슬래시에서도 작동합니다. – desolat

+0

fwiw, desolat 그리고 나는 다음과 같이 기여했습니다 : http://bugs.php.net/51857 –

0

항상 tmp 디렉토리에 압축을 풀고 rmdir()을 사용하여 빈 디렉토리를 삭제 한 다음 다시 압축하면됩니다.

확인해야 할 또 다른 사항은 사용 권한입니다. 조작하려는 파일에 대한 쓰기 권한이 있습니까?

0

리틀 참고. 디렉토리 같은 것은 없습니다. 예 : foo/a.txt 및 foo/b.txt는 두 개의 항목이지만 foo/디렉토리는 없습니다. 그러나 foo /라는 항목을 만들어 디렉토리를 "에뮬레이트"할 수 있습니다.

아무 것도 제거되지 않은 상태에서 true를 반환하는 삭제 방법은 버그처럼 보입니다. 필립에게 http://bugs.php.net에 새로운 버그를 열어달라고 요청 했으므로 빨리 해결할 수 있습니다.

감사합니다.

+1

이미 버그가 있습니다 : http://bugs.php.net/bug.php?id=51857 – desolat