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

Reply via email to