#34778 [NEW]: DirectoryIterator::getType is inconsistent with filetype()

From: Date: Fri, 07 Oct 2005 11:42:00 +0000
Subject: #34778 [NEW]: DirectoryIterator::getType is inconsistent with filetype()
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-86186@lists.php.net to get a copy of this message
From: richard dot quadling at bandvulc dot co dot uk Operating system: Windows XP SP2 PHP version: 5.0.5 PHP Bug Type: SPL related Bug description: DirectoryIterator::getType is inconsistent with filetype() Description: ------------ I'm using SPL RecursiveIteratorIterator, CachingRecursiveIterator and RecursiveDirectoryIterator to get ALL the files in a directory structure. Some of the files are being identied as directories when using DirectoryIterator::getType() and comparing this to the result of filetype(). Reproduce code: --------------- <?php class class_DirectoryWalker extends RecursiveIteratorIterator { function __construct($path) { parent::__construct(new CachingRecursiveIterator(new RecursiveDirectoryIterator($path), CIT_CALL_TOSTRING | CIT_CATCH_GET_CHILD), 1); } function __call($func, $params) { return call_user_func_array(array($this->getSubIterator(), $func), $params); } } $objDIR = new class_DirectoryWalker('M:/Datastore'); foreach($objDIR as $sKey => &$objValue) { echo filetype($sKey) . ' ' . $objValue->getType() . " $sKey\n"; } ?> Expected result: ---------------- dir dir M:/Datastore/Bandvulc Department Desktops dir dir M:/Datastore/Bandvulc Department Desktops/Accounts file file M:/Datastore/Bandvulc Department Desktops/Accounts/Shortcut to ECDL.lnk dir dir M:/Datastore/Bandvulc Department Desktops/Bandvulc Tyre Contracts file file M:/Datastore/Bandvulc Department Desktops/Bandvulc Tyre Contracts/Bandvulc Tyre Contracts.lnk file file M:/Datastore/Bandvulc Department Desktops/Bandvulc Tyre Contracts/Shortcut to Salvesen Europe Contacts.lnk file file M:/Datastore/Bandvulc Department Desktops/Bandvulc Tyre Contracts/Shortcut to Sinead Williams on bandsbs.lnk file file M:/Datastore/Bandvulc Department Desktops/Bandvulc Tyre Contracts/Shortcut to Strike Rates 2005.lnk dir dir M:/Datastore/Bandvulc Department Desktops/Bandvulc Tyre Contracts/Unused Desktop Shortcuts file file M:/Datastore/Bandvulc Department Desktops/Bandvulc Tyre Contracts/Unused Desktop Shortcuts/Access Accounts (btc v1).lnk file file M:/Datastore/Bandvulc Department Desktops/Bandvulc Tyre Contracts/Unused Desktop Shortcuts/Access Accounts (btc v2).lnk Actual result: -------------- dir dir M:/Datastore/Bandvulc Department Desktops dir dir M:/Datastore/Bandvulc Department Desktops/Accounts file dir M:/Datastore/Bandvulc Department Desktops/Accounts/Shortcut to ECDL.lnk dir dir M:/Datastore/Bandvulc Department Desktops/Bandvulc Tyre Contracts file file M:/Datastore/Bandvulc Department Desktops/Bandvulc Tyre Contracts/Bandvulc Tyre Contracts.lnk file file M:/Datastore/Bandvulc Department Desktops/Bandvulc Tyre Contracts/Shortcut to Salvesen Europe Contacts.lnk file file M:/Datastore/Bandvulc Department Desktops/Bandvulc Tyre Contracts/Shortcut to Sinead Williams on bandsbs.lnk file dir M:/Datastore/Bandvulc Department Desktops/Bandvulc Tyre Contracts/Shortcut to Strike Rates 2005.lnk dir dir M:/Datastore/Bandvulc Department Desktops/Bandvulc Tyre Contracts/Unused Desktop Shortcuts file file M:/Datastore/Bandvulc Department Desktops/Bandvulc Tyre Contracts/Unused Desktop Shortcuts/Access Accounts (btc v1).lnk file file M:/Datastore/Bandvulc Department Desktops/Bandvulc Tyre Contracts/Unused Desktop Shortcuts/Access Accounts (btc v2).lnk -- Edit bug report at http://bugs.php.net/?id=34778&edit=1 -- Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=34778&r=trysnapshot4 Try a CVS snapshot (php5.0): http://bugs.php.net/fix.php?id=34778&r=trysnapshot50 Try a CVS snapshot (php5.1): http://bugs.php.net/fix.php?id=34778&r=trysnapshot51 Fixed in CVS: http://bugs.php.net/fix.php?id=34778&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=34778&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=34778&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=34778&r=needscript Try newer version: http://bugs.php.net/fix.php?id=34778&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=34778&r=support Expected behavior: http://bugs.php.net/fix.php?id=34778&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=34778&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=34778&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=34778&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=34778&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=34778&r=dst IIS Stability: http://bugs.php.net/fix.php?id=34778&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=34778&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=34778&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=34778&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=34778&r=mysqlcfg

« previous php.bugs (#86186) next »