php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #64884 RarEntry::extract() for directories does not extract entries within directory
Submitted: 2013-05-20 20:15 UTC Modified: 2020-12-08 19:22 UTC
From: php at login dot hedim dot ch Assigned:
Status: Wont fix Package: rar (PECL)
PHP Version: Irrelevant OS:
Private report: No CVE-ID: None
View Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
If you reported this bug, you can edit this bug over here.
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: php at login dot hedim dot ch
New email:
PHP Version: OS:

 

 [2013-05-20 20:15 UTC] php at login dot hedim dot ch
Description:
------------
When using RarEntry::extract() for an entry that is a directory, only the directory itself is extracted but not the entries within that directory. The extracted directory is empty.

It would be useful if this method extracted the directory including all entries within that directory.

Also, this would be consistent with "x" command of unrar (as in the command-line unrar).

The workaround (i.e. finding and extracting all entries within a given directory entry by name) does not promise to work reliably given that, according to the PHP manual, a RAR archive can have multiple entries with the same name.


Test script:
---------------
Assuming "archive.rar" is an archive with the following contents:

mydirectory
mydirectory/myfile.txt

And the following code snippet:

$archive = RarArchive::open("archive.rar");
foreach ($archive as $entry) {
    if ($entry->isDirectory()) {
        $entry->extract("");
    }
}


Expected result:
----------------
In the current directory, there is a directory called "mydirectory", and within that directory, there is the file "myfile.txt" from the archive.

Actual result:
--------------
In the current directory, there is an empty directory called "mydirectory".

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2020-12-08 19:22 UTC] cataphract@php.net
-Status: Open +Status: Wont fix
 [2020-12-08 19:22 UTC] cataphract@php.net
The change porposed is undesirable. A common scenario, where the user is iterating and extracting entries one by one, would result in this change in the files of a directory being extracted more than once.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Wed Dec 04 19:01:32 2024 UTC