From: arnaud dot lb at gmail dot com
Operating system: Linux
PHP version: 5.2.4
PHP Bug Type: Filesystem function related
Bug description: Unable to chown/chgrp of a symlink
Description:
------------
There is no way to change the owner or group of a symlink.
Using chown and chgrp functions on a symlink affect the file
referenced by the symbolic link, rather than the symbolic link
itself.
There should have a "$dereference" argument to be able to affect the
file referenced by the symlink or the symlink itself.
Reproduce code:
---------------
<?php
// Setup test files
if (file_exists('test-referent')) unlink('test-referent');
if (file_exists('test-symlink')||is_link('test-symlink'))
unlink('test-symlink');
touch('test-referent');
symlink('test-referent', 'test-symlink');
echo shell_exec('chown -h nobody test-symlink test-referent 2>&1');
echo "Original owners: \n";
echo shell_exec("ls -l test-referent test-symlink") . "\n";
// Test changing symlink owner with PHP's chown() function
chown('test-symlink', 'root');
echo "New owners: \n";
echo shell_exec("ls -l test-referent test-symlink");
?>
Expected result:
----------------
chown should affect symlink owner instead of the referenced file
Original owners:
-rw-r--r-- 1 nobody root 0 2007-09-19 16:04 test-referent
lrwxrwxrwx 1 nobody root 13 2007-09-19 16:04 test-symlink ->
test-referent
New owners:
-rw-r--r-- 1 nobody root 0 2007-09-19 16:04 test-referent
lrwxrwxrwx 1 root root 13 2007-09-19 16:04 test-symlink ->
test-referent
Actual result:
--------------
chown has affected the referenced file instead of the symlink itself
Original owners:
-rw-r--r-- 1 nobody root 0 2007-09-19 16:04 test-referent
lrwxrwxrwx 1 nobody root 13 2007-09-19 16:04 test-symlink ->
test-referent
New owners:
-rw-r--r-- 1 root root 0 2007-09-19 16:04 test-referent
lrwxrwxrwx 1 nobody root 13 2007-09-19 16:04 test-symlink ->
test-referent
--
Edit bug report at http://bugs.php.net/?id=42711&edit=1
--
Try a CVS snapshot (PHP 4.4):
http://bugs.php.net/fix.php?id=42711&r=trysnapshot44
Try a CVS snapshot (PHP 5.2):
http://bugs.php.net/fix.php?id=42711&r=trysnapshot52
Try a CVS snapshot (PHP 6.0):
http://bugs.php.net/fix.php?id=42711&r=trysnapshot60
Fixed in CVS: http://bugs.php.net/fix.php?id=42711&r=fixedcvs
Fixed in release:
http://bugs.php.net/fix.php?id=42711&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=42711&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=42711&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=42711&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=42711&r=support
Expected behavior: http://bugs.php.net/fix.php?id=42711&r=notwrong
Not enough info:
http://bugs.php.net/fix.php?id=42711&r=notenoughinfo
Submitted twice:
http://bugs.php.net/fix.php?id=42711&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=42711&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=42711&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=42711&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=42711&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=42711&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=42711&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=42711&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=42711&r=mysqlcfg