php.net |  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: 2015-03-30 18:49 UTC
Votes:13
Avg. Score:4.0 ± 1.2
Reproduced:12 of 12 (100.0%)
Same Version:2 (16.7%)
Same OS:1 (8.3%)
From: hpdl at oscommerce dot com Assigned: mike
Status: Verified Package: PHAR related
PHP Version: 5.3.5 OS: MacOS 10.6.6
Private report: No CVE-ID:
Have you experienced this issue?
Rate the importance of this bug to you:

 [2011-03-17 10:44 UTC] hpdl at oscommerce dot com
Description:
------------
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 
passed.

Test script:
---------------
<?php
  $phar = new Phar('/tmp/test.phar');
  $phar->buildFromDirectory('/path/to/source');
  unset($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

Patches

Add a Patch

Pull Requests

Pull requests:

Add a Pull Request

History

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] cweiske@php.net
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
"/home/cweiske/Dev/semanticscuttle/cwdev/dist/SemanticScuttle-0.98.X.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] kassner@php.net
Reproducible on PHP 5.6.4.
 [2015-03-30 18:49 UTC] mike@php.net
-Status: Open +Status: Verified -Assigned To: +Assigned To: mike
 
PHP Copyright © 2001-2017 The PHP Group
All rights reserved.
Last updated: Tue Aug 29 15:01:52 2017 UTC