ID:               49620
 Updated by:       paj...@php.net
 Reported By:      philipp at servicemail24 dot de
-Status:           Assigned
+Status:           Feedback
 Bug Type:         *Directory/Filesystem functions
 Operating System: win32 only - Windows XP SP2
 PHP Version:      5.3.0
 Assigned To:      pajoye
 New Comment:

Please try using this snapshot:

  http://snaps.php.net/php5.3-latest.tar.gz
 
For Windows:

  http://windows.php.net/snapshots/




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

[2009-09-23 09:51:37] paj...@php.net

hi,

Thanks for testing :)

I can reproduce the problem with 2k3. One of the ACL problem is that
the SID may not match (even if the usernames are the same). The problem
goes away as long as there are domain users and not users per machine.

A working example is to have a share on windows XP, with full control
to everyone or read only. In both cases is_readable or is_writable will
return the correct results.

However it is not certain that I can restore 5.2's behavior. 5.2 was
using (_)access, which did not do any kind of ACL checks and miserably
fails for 90% of the cases. Its guest was luckily working for remote
shares, but that's not guaranteed to work in every situation. 5.3 and
later actually relies on AccessCheck API to do real ACL checks.

I'm setting up some more test VMs to try to find a solution. Thanks
again for testing, that's very helpful.


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

[2009-09-23 09:27:17] philipp at servicemail24 dot de

ok cmd.exe using runas produces the same results.

testuser is a local user account on each system with the same password.
All clients / servers are in the same domain.

Clients are 

Windows XP SP2 GERMAN x86
Windows XP SP3 GERMAN x86

Tested Servers are

Windows 2003 SP2 ENGLISH x64 
- is_readable is working here
- Share Permissions test user full control
- Folder ACL test user full control

Windows 2003 SP2 ENGLISH x86
- neither is_readable nor is_writeable is working here
- Share Permissions testuser full control
- Folder ACL testuser full control

Open-E DSS Server (samba)
- everything is fine

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

[2009-09-23 08:44:20] paj...@php.net

Please also tell me which windows you use as server and client.

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

[2009-09-23 08:20:19] paj...@php.net

I'm not sure to see what's the difference with your config.

Questions:

- How did you configure the share (permissions) on 10.1.1.1

- is it a different host than the test machine?

- Pls simply try using runas, I have no idea what runaspc does
internally :). Or simply login using testuser


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

[2009-09-23 08:10:35] philipp at servicemail24 dot de

I extended my test script with further file sys related functions:

        if(@!is_dir($folder)) {
                echo('FAILED is_dir: ' . $folder . "\n");
        } else {
                echo "OK is_dir:  " . $folder . "\n";
        }

        if ($dh = @opendir($folder)) {
                closedir($dh);
                echo "OK opendir:  " . $folder . "\n";
        } else {
                echo('FAILED opendir: ' . $folder . "\n");
        }

        if(@!is_readable($folder)) {
                echo('FAILED is_readable: ' . $folder . "\n");
        } else {
                echo "OK is_readable:  " . $folder . "\n";
        }

        if(@!is_writeable($folder)) {
                echo('FAILED is_writeable: ' . $folder . "\n");
        } else {
                echo "OK is_writeable:  " . $folder . "\n";
        }

        $filename = $folder . '\\test_' . time() . '.txt';
        $content = 'php test ' . time();

        if(@!file_put_contents($filename, $content)) {
                echo('FAILED file_put_contents: ' . $filename . "\n");
        } else {
                echo "OK file_put_contents:  " . $filename . "\n";
        }

        if(@!is_readable($filename)) {
                echo('FAILED is_readable: ' . $filename . "\n");
        } else {
                echo "OK is_readable:  " . $filename . "\n";
        }

        if(@!is_writeable($filename)) {
                echo('FAILED is_writeable: ' . $filename . "\n");
        } else {
                echo "OK is_writeable:  " . $filename . "\n";
        }

        if(@!file_get_contents($filename) == $content) {
                echo('FAILED file_get_contents: ' . $filename . "\n");
        } else {
                echo "OK file_get_contents:  " . $filename . "\n";
        }

        if(@!unlink($filename)) {
                echo('FAILED unlink: ' . $filename . "\n");
        } else {
                echo "OK unlink:  " . $filename . "\n";
        }

all functions are fine expect is_readable and is_writeable:

5.3.x result:

OK is_dir:  \\10.1.1.1\share
OK opendir:  \\10.1.1.1\share
FAILED is_readable:  \\10.1.1.1\share
FAILED is_writeable: \\10.1.1.1\share
OK file_put_contents:  \\10.1.1.1\share\test_1253693124.txt
FAILED is_readable:  \\10.1.1.1\share\test_1253693124.txt
FAILED is_writeable: \\10.1.1.1\share\test_1253693124.txt
OK file_get_contents:  \\10.1.1.1\share\test_1253693124.txt
OK unlink:  \\10.1.1.1\share\test_1253693124.txt
OK is_dir:  \\srv\share
OK opendir:  \\srv\share
FAILED is_readable:  \\srv\share
FAILED is_writeable: \\srv\share
OK file_put_contents:  \\srv\share\test_1253693124.txt
FAILED is_readable:  \\srv\share\test_1253693124.txt
FAILED is_writeable: \\srv\share\test_1253693124.txt
OK file_get_contents:  \\srv\share\test_1253693124.txt
OK unlink:  \\srv\share\test_1253693124.txt

5.2.x result:
OK is_dir:  \\10.1.1.1\share
OK opendir:  \\10.1.1.1\share
OK is_readable:  \\10.1.1.1\share
OK is_writeable: \\10.1.1.1\share
OK file_put_contents:  \\10.1.1.1\share\test_1253693124.txt
OK is_readable:  \\10.1.1.1\share\test_1253693124.txt
OK is_writeable: \\10.1.1.1\share\test_1253693124.txt
OK file_get_contents:  \\10.1.1.1\share\test_1253693124.txt
OK unlink:  \\10.1.1.1\share\test_1253693124.txt
OK is_dir:  \\srv\share
OK opendir:  \\srv\share
OK is_readable:  \\srv\share
OK is_writeable: \\srv\share
OK file_put_contents:  \\srv\share\test_1253693124.txt
OK is_readable:  \\srv\share\test_1253693124.txt
OK is_writeable: \\srv\share\test_1253693124.txt
OK file_get_contents:  \\srv\share\test_1253693124.txt
OK unlink:  \\srv\share\test_1253693124.txt

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

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/49620

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

Reply via email to