[英]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.