Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Arno Welzel Newsgroups: de.comp.lang.php Subject: Re: Windows is_readable/is_writeable auf Netzlaufwerk. is_*able = false aber file_*_contents liefert Date: Mon, 21 Oct 2019 10:51:52 +0200 Lines: 62 Message-ID: References: <160407183.20190719100454@gmx.net> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1250 Content-Transfer-Encoding: 8bit X-Trace: individual.net grfpncWcKMlKQpH0K3VINwYUAqoFbisxGbiKHDdiaJzMoeIT2C Cancel-Lock: sha1:ZNLWkw6SP37yhDpSYqEPl064fDg= In-Reply-To: <160407183.20190719100454@gmx.net> Content-Language: en-US Xref: csiph.com de.comp.lang.php:4546 On 19.07.19 10:04, Stefan Mayer wrote: > Hallo Leute, > > der Host ist ein Windows Server 2012, der client hat ein Netzlaufwerk mit > Benutzername und Passwort eingebunden. "Z:\ > \\Server\Verzeichnis" > > Wenn man am Host das entsprechende Verzeichnis (Rechtsklick > Sicherheit) > anschaut, hat der Client/Benutzer alle Rechte darauf. Bei der Benutzung des > Laufwerks seitens des Clients kann man keine Beschränkungen feststellen. > > > Z:\test.txt > > ``` > $ chdir /D Z:\ > > $ php -r "var_dump(is_readable('test.txt'));" > // false > > $ php -r "var_dump(file_get_contents('test.txt'));" > // string(4) "Test" > > $ php -r "var_dump(is_writeable('test.txt'));" > // false > > $ php -r "file_put_contents('test.txt', ' Test', FILE_APPEND);" > $ php -r "var_dump(file_get_contents('test.txt'));" > // string(9) "Test Test" > ``` > > Mein Frage wäre hier: Wie genau funktionieren eigentlich is_*able, und was ist > hier der Unterschied zu file_*_contents? file_get_contents() liest die Datei aus, während is_readable() nur prüft, ob die Zugriffsrechte ausreichen, um eine Datei zu lesen. > Wie kann ich ermitteln, unter welchem Benutzer php-cli gerade versucht die Datei > mit is_*able zu prüfen? Das ist sollte immer der User sein, mit dem php gestartet wird. > Es gibt hier einen Eintrag: https://bugs.php.net/bug.php?id=62199 > > Der bezieht sich allerdings auf Samba Freigaben. Kann ich daraus etwas für mein > Problem ableiten? Das es genau dieses Problem ist: "... Windows Server 2012, der client hat ein Netzlaufwerk mit Benutzername und Passwort eingebunden." Und genau das *sind* Samba-Freigaben, nur dass statt Samba eben ein Windos-Server verwendet wird. Aber die Technik ist die selbe. -- Arno Welzel https://arnowelzel.de