|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #54289 Phar::extractTo() does not accept specific directories to be extracted
Submitted: 2011-03-17 10:44 UTC Modified: 2018-01-06 07:26 UTC
Avg. Score:3.9 ± 1.2
Reproduced:13 of 13 (100.0%)
Same Version:2 (15.4%)
Same OS:1 (7.7%)
From: hpdl at oscommerce dot com Assigned: bishop (profile)
Status: Closed Package: PHAR related
PHP Version: 5.3.5 OS: MacOS 10.6.6
Private report: No CVE-ID: None
 [2011-03-17 10:44 UTC] hpdl at oscommerce dot com
Phar::extractTo() does not allow specific directories to be extracted. The 
documentation states the second parameter can be a file or directory to only 
extract the file or directory from the phar archive.

Specific files can be extracted however an exception is thrown when a directory is 

Test script:
  $phar = new Phar('/tmp/test.phar');

  $phar = new Phar('/tmp/test.phar');
  $phar->extractTo('/tmp/test/', 'subdir1/subdir2/', true); // throws exception
//  $phar->extractTo('/tmp/test/', 'subdir1/subdir2/file.txt', true); // works as intended

Expected result:
The specific directory should be extracted from the phar archive.

Actual result:
Fatal error: Uncaught exception 'PharException' with message 'Phar Error: 
attempted to extract non-existent file "subdir1/subdir2/" from phar 
"/tmp/test.phar"' in /phar-test.php on line 7


Add a Patch

Pull Requests

Pull requests:

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2011-08-11 20:33 UTC] hpdl at oscommerce dot com
Bug still exists in PHP 5.3.7RC5.
 [2011-08-27 06:28 UTC]
I can confirm that - extracting directories does not work:

PHP Fatal error:  Uncaught exception 'PharException' with message
'Phar Error: attempted to extract non-existent file "doc/" from phar
in /home/cweiske/Dev/semanticscuttle/cwdev/phartest.php:3

Stack trace:
#0 /home/cweiske/Dev/semanticscuttle/cwdev/phartest.php(3): Phar->extractTo('/tmp/test/', 'doc/', true)
#1 {main}
  thrown in /home/cweiske/Dev/semanticscuttle/cwdev/phartest.php on line 3
 [2015-01-02 14:49 UTC]
Reproducible on PHP 5.6.4.
 [2015-03-30 18:49 UTC]
-Status: Open +Status: Verified -Assigned To: +Assigned To: mike
 [2017-10-24 05:18 UTC]
-Status: Verified +Status: Assigned
 [2017-10-24 06:40 UTC]
-Status: Assigned +Status: Open -Assigned To: mike +Assigned To:
 [2018-01-06 05:25 UTC]
-Status: Open +Status: Analyzed -Assigned To: +Assigned To: bishop
 [2018-01-06 05:25 UTC]
Occurs because the extractTo implementation scans the manifest -- which only contains file leaves. A pattern based scan is called for here.
 [2018-01-06 06:52 UTC]
Proposed fix at PR 3008
 [2018-01-06 07:26 UTC]
Correction: that should be PR #3009
 [2018-01-28 20:55 UTC]
Automatic comment on behalf of
Log: Fixed bug #54289
 [2018-01-28 20:55 UTC]
-Status: Analyzed +Status: Closed
PHP Copyright © 2001-2023 The PHP Group
All rights reserved.
Last updated: Fri Dec 01 01:01:28 2023 UTC