Edit report at https://bugs.php.net/bug.php?id=65069&edit=1

 ID:                 65069
 Updated by:         a...@php.net
 Reported by:        s...@php.net
 Summary:            GlobIterator fails to access files inside an
                     open_basedir restricted dir
 Status:             Feedback
 Type:               Bug
 Package:            SPL related
 Operating System:   Windows7
 PHP Version:        5.5.0RC3
 Block user comment: N
 Private report:     N

 New Comment:

Ok, inside destructor it reproducible for me on windows CLI, that's already 
something one can debug :) But the original snippet still doesn't fail that 
way. 
And trying DirectoryIterator at that play it works ... so most likely 
GlobIterator 
is broken somehow.


Previous Comments:
------------------------------------------------------------------------
[2013-06-20 18:01:00] jamie at media32 dot ca

I forgot to mention in my previous comment that I'm running PHP 5.4.14 on OSX 
Lion.

------------------------------------------------------------------------
[2013-06-20 17:59:42] s...@php.net

On CLI I also get the same problem, Win7 x64 + PHP 5.5.0RC3 or 5.4.3. 

With PHP 5.3.5 and 5.4.6 on linux it works fine though. Seems it might be 
windows specific. Although as Jamie says it can maybe be triggered in other 
ways than using windows.

------------------------------------------------------------------------
[2013-06-20 17:56:42] jamie at media32 dot ca

I think I can reproduce this. It only happens when the GlobIterator is used 
inside the destructor, and the script is run using Apache/Mod PHP (running via 
CLI returns the correct results).

<?php
error_reporting(-1);
ini_set('display_errors', 1);
ini_set('open_basedir', __DIR__);

class Globber
{
        public function __destruct()
        {
                var_dump(__DIR__);
                var_dump(glob(__DIR__ . '/*.php'));
                var_dump(iterator_to_array(new \GlobIterator(__DIR__ 
.'/*.php')));
        }
}

$globber = new Globber;
?>

When running via Apache/Mod PHP an UnexpectedValueException is thrown.

------------------------------------------------------------------------
[2013-06-20 17:11:43] a...@php.net

Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves. 

A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external 
resources such as databases, etc. If the script requires a 
database to demonstrate the issue, please make sure it creates 
all necessary tables, stored procedures etc.

Please avoid embedding huge scripts into the report.

Tried your snippet on CLI, but there's no behaviour you describe. I see a 
proper listing in both 
cases. There must be something else causing this.

------------------------------------------------------------------------
[2013-06-20 14:48:58] s...@php.net

Description:
------------
GlobIterator fails to access files present in a valid directory when an 
open_basedir restriction is in effect. Even if the dir is inside the 
open_basedir restriction it fails.

Test script:
---------------
ini_set('open_basedir', __DIR__);

var_dump(glob(__DIR__.'/*.php'));
var_dump(iterator_to_array(new GlobIterator(__DIR__.'/*.php')));


Expected result:
----------------
Two lists of php files in the current dir.

Actual result:
--------------
The glob() call returns a list of files, then the GlobIterator explodes with:

UnexpectedValueException: GlobIterator::__construct(): open_basedir restriction 
in effect. File(glob://C:\Users\seld/*.php) is not within the allowed path(s): 
(C:\Users\seld) in C:\Users\seld\test.php on line 6



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=65069&edit=1

Reply via email to