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_reada