簡體   English   中英

PHP ZipArchive getFromName無法讀取具有相對路徑的文件

[英]PHP ZipArchive getFromName can't read file with relative path

我正在嘗試使用getFromName方法使用ZipArchive從zip文件中讀取文件內容。 我的文件名中有一個雙點( .. )。 這是我的代碼:

$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文件位於同一目錄中。 當我嘗試使用以下Linux命令壓縮的文件夾中列出文件時:

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

它運作完美。 我不明白為什么ZipArchive無法正確讀取此相對路徑。

注意 :我知道我可以使用絕對路徑讀取文件: book/README.md但是我確實需要將相對路徑與..一起使用,因為文件路徑是從另一個位置動態加載的,並且我沒有控件在他們。

我花了大約一天的時間在一個類似的問題上,試圖讀取相對的文件路徑,包括“ ..”更改目錄。 如果未提取文件,ZipArchive將無法處理這些路徑。 我無需提取Zip的最佳解決方案是使用以下函數來獲取所需文件的完整路徑: http : //php.net/manual/zh/function.realpath.php#84012 獲取完整的文件路徑后,ZipArchive :: getFromName()將能夠找到您要查找的文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM