From: kibab at icehouse dot net
Operating system: redhat enterprise
PHP version: 5.0.3
PHP Bug Type: Filesystem function related
Bug description: is_readable() results based on ownership of calling script,
not file
Description:
------------
is_readable($myfilename) in the repro code returns true if
the script calling it is owned by root, but false if it is
owned by someone else.
Permissions are:
-rw-r--r-- 1 root root 5452 Jan 13
13:02 /var/lib/php_packages/test_templ2.php
drwxr-xr-x 4 root root 4096 Jan 19
08:19 /var/lib/php_packages
drwxr-xr-x 27 root root 4096 Jan 12
09:27 /var/lib
drwxr-xr-x 24 root root 4096 Sep 22
13:06 /var
drwxr-xr-x 20 root root 4096 Oct 29 09:48 /
Relevant Settings:
include_path =
".:/var/lib/php_packages:/var/lib/php_packages/pear"
safe_mode = On
safe_mode_gid = On
safe_mode_include_dir = /var/lib/php_packages
Reproduce code:
---------------
#### test.php ###
$myfilename = '/var/lib/php_packages/test_templ2.php';
if (is_readable($myfilename)) {
echo "is_readable: $myfilename (true)<br>";
} else {
echo "is_readable: $myfilename (false)<br>";
}
include($myfilename);
### test_templ2.php ###
TESTING!
Expected result:
----------------
I would expect is_readable() to return true in both
instances. The uid/gid check shouldn't matter despite
safe mode, as the file is in safe_mode_include_dir, and
even if it wasn't, the is_readable documentation says that
it does NOT take into account safe_mode restrictions.
Actual result:
--------------
// When test.php has the following ownership:
$ ls -l test.php
-rw-rw-r-- 1 root root 278 Jan 19 13:16
test.php
// I get the following output:
is_readable: /var/lib/php_packages/test_templ2.php (true)
TESTING!
// When test.php has the following permissions:
$ ls -l test.php
-rw-rw-r-- 1 dschlegel79 undergradadmiss 278 Jan
19 13:16 test.php
// I get the following output:
is_readable: /var/lib/php_packages/test_templ2.php (false)
TESTING!
--
Edit bug report at http://bugs.php.net/?id=31618&edit=1
--
Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=31618&r=trysnapshot4
Try a CVS snapshot (php5.0):
http://bugs.php.net/fix.php?id=31618&r=trysnapshot50
Try a CVS snapshot (php5.1):
http://bugs.php.net/fix.php?id=31618&r=trysnapshot51
Fixed in CVS: http://bugs.php.net/fix.php?id=31618&r=fixedcvs
Fixed in release: http://bugs.php.net/fix.php?id=31618&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=31618&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=31618&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=31618&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=31618&r=support
Expected behavior: http://bugs.php.net/fix.php?id=31618&r=notwrong
Not enough info:
http://bugs.php.net/fix.php?id=31618&r=notenoughinfo
Submitted twice:
http://bugs.php.net/fix.php?id=31618&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=31618&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=31618&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=31618&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=31618&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=31618&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=31618&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=31618&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=31618&r=mysqlcfg