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

 ID:                 52647
 Comment by:         sodijfsdoifjsoidfj at osidjfoidsfj dot com
 Reported by:        shaun dot spiller at yahoo dot com
 Summary:            Function to get Windows drive letters
 Status:             Assigned
 Type:               Feature/Change Request
 Package:            Filesystem function related
 Operating System:   Windows
 PHP Version:        5.3.3
 Assigned To:        pajoye
 Block user comment: N
 Private report:     N

 New Comment:

This does it in PHP-only code, but it takes about half a second to load the COM 
object, so it's probably no use except in long-running CLI scripts, or unless 
you cache the result for a while.

function filesys_get_roots() {
        static $roots = null;
        if ($roots === null) {
                if (strncasecmp(PHP_OS, 'WIN', 3) === 0) {
                        $fso = new COM('Scripting.FileSystemObject');
                        foreach ($fso->Drives as $drive) {
                                $roots[] = $drive->DriveLetter . ':\\';
                        }
                } else {
                        $roots = array('/');
                }
        }
        return $roots;
}

Really the function needs to be in the PHP core.


Previous Comments:
------------------------------------------------------------------------
[2011-10-27 20:14:53] shaun dot spiller at yahoo dot com

@fate at jehy dot ru

'Twas the very first thing I tried. The problem is it spins up sleeping drives. 
For the floppy drive it had the particularly nasty effect of displaying this 
message on the desktop: "Windows - No Disk: There is no disk in the drive. 
Please insert a disk into drive. Cancel / Try Again / Continue".

That's not very good in CLI and certainly no good in a web server environment, 
and I was making a remote file access script, you see. It needed a proper API 
call, one way or another.

------------------------------------------------------------------------
[2011-10-27 12:11:29] [email protected]

@fate at jehy dot ru

it could be handy and it costs less to do it using the system's API direclty.

------------------------------------------------------------------------
[2011-10-27 11:56:43] fate at jehy dot ru

So useless.



function get_drives()
{
$d='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$drives='';
for($i=0;$i<strlen($d);$i++)
  if(is_dir($d[$i].':\\'))
    $drives.=$d[$i];
echo $drives;
}

------------------------------------------------------------------------
[2011-05-26 23:53:20] asdasdioj at asdojiojasd dot asdasd

I check back here every day for progress. Never happens. I'm non-plussed as to 
how this feature got overlooked for so long, or what mythical issues pajoye 
thinks there are with my lovely code. :-(

------------------------------------------------------------------------
[2011-05-26 23:40:49] drgroove at gmail dot com

I'd really like to see this, or something like it, added to the next version of 
PHP.

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


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=52647


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

Reply via email to