Edit report at https://bugs.php.net/bug.php?id=65069&edit=1
ID: 65069 Comment by: jamie at media32 dot ca 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: I forgot to mention in my previous comment that I'm running PHP 5.4.14 on OSX Lion. Previous Comments: ------------------------------------------------------------------------ [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