PEAR: File_Archive, PHP:zip

zip 파일을 이용한 다중 파일 업로드를 테스트 해볼까 싶어서 php 레퍼런스를 찾아보니 [php:zip] extension 란게 나온다. php4 까지는 –with-zip 옵션을 통해 [php:zip] extension 을 활성화 시킬 수 있지만 php5 에서는 pecl-zip 패키지를 이용해야 하는데, gentoo 의 php5 지원은 좀 미약했기 때문에 설치가 잘 되지 않았다.

이것 저것 알아보다가 보니 비슷한 역할을 하는 [PEAR:File_Archive] 를 찾을 수 있었다. 사용법은 [php:zip] extension 쪽이 조금 더 간단하지만, [PEAR:File_Archive] 는 여러가지 파일 포멧을 지원하고 recursive 하게도 동작하기 때문에 좀 더 유리한 점이 있을 거 같다. ([PEAR:File_Archive] 는 zip 파일 안에 있는 tar.gz 파일도 열 수 있다)

대강대강 테스트를 해봤더니 [PEAR:File_Archive] 는 확장자를 이용해서 어떤 형식의 archive 인지를 판단한다. 때문에 좀 귀찮음.

잠시 잊고 있다가 gwn 을 보니 gentoo 에서 php5 를 제대로 지원하기 시작하는 듯 해서… 잠깐의 삽질 끝에 [php:zip] 설치에 성공했다. 역시나 [PEAR:File_Archive] 보다는 [php:zip] 이 좀 더 많은 정보를 제공하고 사용하기가 용이하다.

code:

http://mytears.org/resources/mysrc/php/zip/zip.php

http://mytears.org/resources/mysrc/php/zip/file_archive.php

php: mytrz-dviewer

예전에 수정해서 이쁘게 만들어 사용하고 있는 mod_autoindex 의 경우에는 아파치의 모듈이기 때문에 관리가 활성화 시켜주지 않으면 사용할 수 없는 단점이 있어서… 누군가에게 권하기도 그렇고… 수정하기도 매우 어려웠습니다…

심심하던 차에 아는 사람 부탁 겸… 해서 directory viewer 를 php 로 다시 작성했습니다… template 엔진으로 template_ 만 써보다가 smarty 를 처음 써봤는데 template_ 이 좀 더 쓰기 쉬운 듯 하기는 하지만… smarty 도 그런데로 쓸만한 것 같습니다…

[php:realpath] 란 함수를 사용해서 내가 지정해놓은 디렉토리 루트 밖으로는 나갈 수 없도록 해놓았고 수많은 버그가 있겠지만… 하튼 동작은 합니다…

데모:

http://mytears.org/tmp/dir/

다운로드 url:

http://mytears.org/resources/distfiles/directory-viewer-1.1.1.tar.gz

개발버젼:

http://trac.unfix.net/browser/mytrz-dviewer

라이센스: BSD License

참고로 템플릿 엔진은 smarty 를 쓰고 있는데, 제 서버에는 smarty 가 /usr/lib/php 밑에 설치되어 있기 때문에 따로 더 필요가 없었는데… 서버에 smarty 가 이미 깔려있지 않은 분들은 smarty 를 받아다가 풀어주는 센스가 필요합니다…

p.s) 혹시나 가져다가 새로운 디자인으로 고치신 분이 계시면 skin 관련해서 feedback 좀 부탁드리겠습니다 :)

Change Log:
2006/8/29
1. 개인 Repository 를 하나로 통합하면서 svn 경로가 수정됨
2. 웹에서 svn 을 둘러보기 위한 툴을 trac 으로 변경
3. 프로젝트 이름을 mytrz-dviewer 로 변경

2006/06/27
1. fancy size bug 수정
2. 1.1.1 버젼 릴리즈

2005/08/24
1. 스킨에서 경로도 표시가능하게 수정
2. taeyoung 스킨 추가
3. web_basedir 에서는 Parent Direcory 링크를 보여주지 않게 고침
4. 1.1 버젼 릴리즈

2005/08/17
1. kirrie 님의 스킨 추가
2. kukie 스킨 업데이트 (I.E 호환성이 더 좋아짐)

2005/08/13
1. Filename / Size / Modification Time 으로 역순 정렬이 가능해짐 (내림차순)
2. 설정 가능한 변수들을 config.php 로 빼냄
3. 숨긴 파일( 파일 이름이 “.” 으로 시작하는 파일) 을 보여줄지 말지 설정 가능해짐
4. BSD License 로 정하고 소스에 라이센스를 명시
5. Encoding 도 설정가능하도록 수정
6. 1.0 버젼 릴리즈

2005/08/12
1. XHTML 표준에 맞지 않는 부분들을 수정 validation 을 통과

2005/08/09
1. template_c 디렉토리의 퍼미션을 바꿔주는 인스톨용 스크립트 추가 (정말 퍼미션만 딱 바꿔줌 -_-);;

2005/08/08
1. 숨긴 파일 (파일 이름이 “.” 으로 시작하는 파일) 을 보여주지 않도록 함

2005/08/04
1. Filename / Size / Modification Time 으로 정렬이 가능해짐 (오름차순만 지원)
2. Skin 기능이 추가됨
3. svn repository 에 import 하고 누구든지 받을 수 있도록 공개