Edit report at https://bugs.php.net/bug.php?id=38025&edit=1
ID: 38025 Comment by: mirco dot babin at gmail dot com Reported by: flconseil at yahoo dot fr Summary: Missing stream wrapper methods Status: Open Type: Feature/Change Request Package: Streams related Operating System: * PHP Version: 5.3 Block user comment: N Private report: N New Comment: I implemented my own stream, named "localexe" on the Windows platform (using C, not php user streams). 1) The realpath('localexe://localhost/teststream.php'); should return "localexe://localhost/teststream.php", because it exists. Currently it returns false. 2) The chdir('localexe://localhost/'); results in "Warning: chdir() [function.chdir]: No such file or directory (errno 2) in localexe://localhost/teststream.php on line 383" 3) Because chdir(); does not work with streams, the include('./testinclude1.php'); also doesn't work. ---- I tracked down in the sources to tsrm_virtual_cwd.h. This is a layer on Windows to implement GetCurrentDirectory() avoiding thread issues. This layer can't handle any custom stream, it always uses the local filesystem. I think this is the main problem. Previous Comments: ------------------------------------------------------------------------ [2010-06-26 06:26:07] james at gogo dot co dot nz I will add also that if touch() gets called with a (normally stream wrapped) URL, it actually attempts to touch a file by that name on the local file system, most likely unsuccessfully (producing a WARNING) but there is no particular reason why it could not be successful in some situation. Better/safer behavior would be to give an ERROR that you are trying to touch a stream wrapped file which can't be touched (or preferably of course, implement the ability for stream wrappers to accommodate touch()). ------------------------------------------------------------------------ [2010-06-25 18:36:28] james at gogo dot co dot nz In the 4 years since this bug/feature request was reported, flock() has been implemented. I can not see any documentation to indicate that touch(), chmod() etc... are possible to implement with stream wrappers yet. url_stat() is able to provide read access for these data points, but there is no means to provide the write access. ------------------------------------------------------------------------ [2006-07-06 16:59:40] flconseil at yahoo dot fr Description: ------------ The following functions cannot be implemented in a stream wrapper because the corresponding methods don't exist : - chgrp & lchgrp - chown &lchown - chmod - flock - link & symlink/readlink - touch To be confirmed for : - ftruncate - realpath For most of these (links, owner, mode), as the values can be returned by stat/lstat() calls, PHP should provide a way to set/modify them. ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=38025&edit=1