Bug #68926 [Com]: is_writable returns false but file_put_contents works
| From: | webmastersguide2000 at yahoo dot com | Date: | Thu, 04 Jun 2015 19:13:29 +0000 |
| Subject: | Bug #68926 [Com]: is_writable returns false but file_put_contents works | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-193123@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=68926&edit=1
ID: 68926
Comment by: webmastersguide2000 at yahoo dot com
Reported by: lukyer at gmail dot com
Summary: is_writable returns false but file_put_contents
works
Status: Analyzed
Type: Bug
Package: *Directory/Filesystem functions
Operating System: Windows 8 64b Prof.
PHP Version: 5.6Git-2015-01-27 (Git)
Assigned To: ab
Block user comment: N
Private report: N
New Comment:
I get a similar symptom going back to at least 5.4.19, but without Samba.
We are running:
PHP Version 5.4.19
System Windows NT DEV-LMS2 6.1 build 7601 (Windows Server 2008 R2 Enterprise Edition Service Pack 1)
i586
Build Date Aug 21 2013 01:06:09
Compiler MSVC9 (Visual C++ 2008)
Architecture x86
Configure Command cscript /nologo configure.js "--enable-snapshot-build"
"--enable-debug-pack" "--disable-zts" "--disable-isapi"
"--disable-nsapi" "--without-mssql" "--without-pdo-mssql"
"--without-pi3web" "--with-pdo-oci=C:\php-sdk\oracle\instantclient10\sdk,shared"
"--with-oci8=C:\php-sdk\oracle\instantclient10\sdk,shared"
"--with-oci8-11g=C:\php-sdk\oracle\instantclient11\sdk,shared"
"--with-enchant=shared" "--enable-object-out-dir=../obj/"
"--enable-com-dotnet=shared" "--with-mcrypt=static"
"--disable-static-analyze" "--with-pgo"
In my case at least, is_writeable also returns false for directories which are writeable.
Previous Comments:
------------------------------------------------------------------------
[2015-02-12 19:00:59] ab@php.net
I've spent some time on debugging this and can confirm. The reason for this behavior is here https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/ChangeNotes.html#id2578661
.
You probably could check that
- you use samba3 or above
- the folder owner is mapped to something like "nobody", with either full or restricted
access rights (use right click -> security -> advanced)
You also could play with the access rights on the linux machine, just to see whether it changes
something in PHP behavior.
The issue here is that unmapped unix user accounts are mapped to built-in windows SIDs, which are
obviously have nothing to do with windows ACLs. We could currently look whether it's possible
to cover this part within PHP. In general it looks more like samba compat issue, because as
you've mentioned - the native shares work well.
Regards
------------------------------------------------------------------------
[2015-01-29 07:12:51] lukyer at gmail dot com
Drive Z in my case is Samba mapped drive using "Map network drive" function in Windows
Explorer. "tmp (\\192.168.0.15\bughunt)". Any other drives works as expected. Just network
Samba drives are problematic.
var_dump(is_writable('Z:\tmp'));
var_dump(file_put_contents('Z:\tmp\hello.txt', 'hello'));
output:
bool(false)
int(5)
------------------------------------------------------------------------
[2015-01-28 14:53:10] ab@php.net
Cannot reproduce here:
var_dump(is_writable('p:\tmp'));
var_dump(file_put_contents('p:\tmp\hello.txt', 'hello'));
this delivers
bool(true)
int(5)
@lukyer please check what exactly is causing this behavior and provide some more data, so we can
reproduce and debug.
Thanks.
------------------------------------------------------------------------
[2015-01-27 21:38:42] lukyer at gmail dot com
Description:
------------
When samba drive is mapped in Windows, call to is_writable returns false on folders and files
although these are actually writable.
is_readable seems working ok.
Test script:
---------------
echo is_writeable("Z://fdvtest"); // returns 0
file_put_contents("Z://fdvtest/file", "content"); // works fine
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=68926&edit=1