ID: 26224 User updated by: justin dot white at mci dot com Reported By: justin dot white at mci dot com -Status: Feedback +Status: Open Bug Type: Filesystem function related Operating System: Windows 2000 PHP Version: 4.3.3 New Comment:
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. Previous Comments: ------------------------------------------------------------------------ [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