From: arnaud dot lb at gmail dot com
Operating system:
PHP version: 5.2.4
PHP Bug Type: Feature/Change Request
Bug description: Defining sys/stat.h's constants in PHP
Description:
------------
It would be very useful to have the sys/stat.h constants (S_*, e.g.
S_ISUID for the setuid bit) defined in PHP, to be able to more
easily use the values returned by functions such as fileperms() or
stat().
I actually use this to define them (from stat(2) man page), but I
guess it's not portable:
<?php
define('S_IFMT', 0170000); //bit mask for the file type
bit fields
define('S_IFSOCK', 0140000); //socket
define('S_IFLNK', 0120000); //symbolic link
define('S_IFREG', 0100000); //regular file
define('S_IFBLK', 0060000); //block device
define('S_IFDIR', 0040000); //directory
define('S_IFCHR', 0020000); //character device
define('S_IFIFO', 0010000); //FIFO
define('S_ISUID', 0004000); //set UID bit
define('S_ISGID', 0002000); //set-group-ID bit (see
below)
define('S_ISVTX', 0001000); //sticky bit (see below)
define('S_IRWXU', 00700); //mask for file owner permissions
define('S_IRUSR', 00400); //owner has read permission
define('S_IWUSR', 00200); //owner has write permission
define('S_IXUSR', 00100); //owner has execute permission
define('S_IRWXG', 00070); //mask for group permissions
define('S_IRGRP', 00040); //group has read permission
define('S_IWGRP', 00020); //group has write permission
define('S_IXGRP', 00010); //group has execute permission
define('S_IRWXO', 00007); //mask for permissions for others
(not in group)
define('S_IROTH', 00004); //others have read permission
define('S_IWOTH', 00002); //others have write permission
define('S_IXOTH', 00001); //others have execute permission
?>
This make me able to do things like ($fileperms & S_IROTH) instead
of ($fileperms & 00004) to know if a file is world readable.
--
Edit bug report at http://bugs.php.net/?id=42705&edit=1
--
Try a CVS snapshot (PHP 4.4):
http://bugs.php.net/fix.php?id=42705&r=trysnapshot44
Try a CVS snapshot (PHP 5.2):
http://bugs.php.net/fix.php?id=42705&r=trysnapshot52
Try a CVS snapshot (PHP 6.0):
http://bugs.php.net/fix.php?id=42705&r=trysnapshot60
Fixed in CVS: http://bugs.php.net/fix.php?id=42705&r=fixedcvs
Fixed in release:
http://bugs.php.net/fix.php?id=42705&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=42705&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=42705&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=42705&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=42705&r=support
Expected behavior: http://bugs.php.net/fix.php?id=42705&r=notwrong
Not enough info:
http://bugs.php.net/fix.php?id=42705&r=notenoughinfo
Submitted twice:
http://bugs.php.net/fix.php?id=42705&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=42705&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=42705&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=42705&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=42705&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=42705&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=42705&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=42705&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=42705&r=mysqlcfg