2016-06-01 3 views
0

getFromName 메서드를 사용하여 ZipArchive로 파일 내용을 읽으려고합니다. 내 파일 이름에 이중 점 (..)이 있습니다.PHP ZipArchive getFromName이 상대 경로로 파일을 읽을 수 없습니다.

$zip = new ZipArchive(); 

$zip->open('book.zip'); 

$content = $zip->getFromName('book/html/../README.md'); 

var_dump($content); 

내 zip 파일의 구조는 이것이다 :

Archive: book.zip 
    Length  Date Time Name 
--------- ---------- ----- ---- 
     0 2016-06-01 11:09 book/ 
     0 2016-06-01 11:02 book/html/ 
    1855 2016-06-01 11:02 book/html/composer.json 
    2354 2016-06-01 11:09 book/README.md 
---------      ------- 
    4209      4 files 

내 PHP 스크립트 내 zip 파일과 같은 디렉토리에 여기에 내 코드입니다. 내가 같이 리눅스 명령으로 압축 한 폴더에있는 파일 목록을하려고 할 때 : 그것은 완벽하게 작동

ls -l book/html/../README.md 

합니다. 나는 왜 ZipArchive가이 상대 경로를 올바르게 읽을 수 없는지 이해하지 못합니다.

: 파일 경로가 다른 곳에서 동적으로로드하고, 나는이 없기 때문에 book/README.md는하지만 난 정말 ..와 상대 경로를 사용할 필요가 : 나는 절대 경로로 파일을 읽을 수 있다는 사실을 알고 그들에 대한 통제.

답변

0

나는 ".."변경 디렉토리를 포함하여 상대적인 파일 경로를 읽으려는 비슷한 문제에 하루 정도를 보냈다. 파일을 추출하지 않으면 ZipArchive에서 해당 경로를 처리 할 수 ​​없습니다. 가장 좋은 해결책은 Zip을 추출 할 필요없이 다음 함수를 사용하여 원하는 파일의 전체 경로를 얻는 것입니다. http://php.net/manual/en/function.realpath.php#84012. 전체 파일 경로를 얻으면 ZipArchive :: getFromName()이 찾고있는 파일을 찾을 수 있습니다.

관련 문제