ID:               26224
 User updated by:  justin dot white at mci dot com
 Reported By:      justin dot white at mci dot com
 Status:           Open
 Bug Type:         Filesystem function related
 Operating System: Windows 2000
 PHP Version:      4.3.3
 New Comment:

I also have a RH8 server with PHP 4.3.3 available and the sample code
works flawlessly.


Previous Comments:
------------------------------------------------------------------------

[2003-11-12 13:23:13] justin dot white at mci dot com

No, the result is the same.  It appears that fileperms() and
is_readable/is_writeable are all reading their permissions from file
properties and not from filesystem permissions.

Also, is_executable returned the following error:

"Fatal error: Call to undefined function: is_executable()".

I didn't see where a note was given about availability in Win32 train,
so I don't what is up with that.  Both is_readable() and is_writeable()
were available, although incorrect.

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

[2003-11-12 13:08:10] [EMAIL PROTECTED]

Does it work if you use the is_readable/is_writeable/is_executable
functions instead of performing bitmask operations on the output of
fileperms() ?

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

[2003-11-12 13:06:04] justin dot white at mci dot com

The server in the test setup uses NTFS in all filesystems.

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

[2003-11-12 13:04:27] justin dot white at mci dot com

Description:
------------
On Linux, PHP 4.3.3 correctly returns file permissions from the
filesystem.  With Windows 2000 and IIS, PHP in CGI or ISAPI mode does
not.  The reproduce code assumes that another file (TEST.PHP) already
exists in the filesystem.  Any other file or directory could be used
(although the permissions are returned differently for directories). 
TEST.PHP can have any permissions, including explicitly DENY "Full
Access" for EVERYONE group.

Reproduce code:
---------------
<?php
  clearstatcache();
  $test = fileperms('c:/inetpub/wwwroot/test.php');
  echo '<H1>PERMS = ';
  $read = ($test & 0x0004) ? 'r' : '-';
  $write = ($test & 0x0002) ? 'w' : '-';
  $execute = ($test & 0x0001) ? 'x' : '-';
  echo $read.$write.$execute.'</H1>';
?>

Expected result:
----------------
For files, returned results should be "<H1>PERMS = r--</H1>' if
permissions were set to READ.  Returned results should be "<H1>PERMS =
rw-</H1>" if permissions were set to READ/WRITE or READ/WRITE/MODIFY. 
Returned results should be "<H1>PERMS = rwx</H1>" if permissions were
set to READ/EXECUTE/WRITE or READ/EXECUTE/WRITE/MODIFY or FULL
CONTROL.

For directories, returned result should be similar (although
permissions on directory are more well-defined).

Actual result:
--------------
For files, returned results will always be "<H1>PERMS = rw-</H1>';

For directories, returned result will always be "<H1>PERMS =
rwx</H1>';

Even attempting this operation on "C:/pagefile.sys" returned "<H1>PERMS
= rw-".

Curiously, when marking the file as "read-only" in the file properties
(not security tab), the returned results are "<H1>PERMS = r--</H1>" for
files and "<H1>PERMS = r-x</H1>" for directories.


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


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

Reply via email to