> -----Original Message-----
> From: Fleshgrinder [mailto:p...@fleshgrinder.com]
> Sent: Saturday, April 1, 2017 12:00 AM
> To: Anatol Belski <a...@php.net>; internals@lists.php.net; Rasmus Schultz
> <ras...@mindplay.dk>
> Subject: Re: [PHP-DEV] Directory separators on Windows
> 
> On 3/31/2017 9:29 PM, Anatol Belski wrote:
> > I can only link to this 😉
> >
> > http://git.php.net/?p=php-src.git;a=commitdiff;h=ec78507bd46a05f77dbde
> > 3fa4091ab4c91e61cad
> >
> >  the new implementation was consistent but had to be reverted in 7.1
> > partially, because of BC, even the use is inappropriate. Well, still
> > normalization on Windows means having '\\' in terms of the platform
> > API used, but just as a show case. The dirname function itself is
> > based on the PHP implementation, not a platform API. But also, it
> > would produce same path with different separators on different
> > platform, if normalized.
> >
> 
> A good example that showcases that we actually could normalize to slashes,
> don't you think. :)
> 
Nope, actually the opposite. More as an illustration to what shouldn't be done, 
namely fixing in core what actually would belongs to an app. But for BC, it's 
another point.

> Besides, I still believe that it is very wrong of PHP to treat URIs/URLs the 
> same
> as paths. A path can be a URI, but a URI should only be a path if it has the
> `file://` scheme. The current approach just asks for remote code inclusion, 
> URL
> fopen anyone? Different story though.
> 
" A Uniform Resource Identifier (URI) is a compact sequence of
   characters that identifies an abstract or physical resource" they say. Fits 
perfectly with PHP streams.

> On 3/31/2017 9:29 PM, Anatol Belski wrote:
> > You're right, they both are documented. What is not defined is the
> > cross platform handling. There are some documents, yes, like RFC 3986,
> > or RFC 1738 and RFC 8089 which are still in the proposed state.
> > However there is none I knew that would care about crossplatform
> > nuances in full extent. Particularly an RFC defining all the possible
> > behaviors of the file:// scheme is what were needed, I guess. Thus my
> > conclusion is to take the path of less resistance, as what is not
> > defined is not necessary good but also is not necessary broken. Yeah,
> > it is complex, and particularly in PHP historically grown, and just
> > touching the water surface might already produce some high waves.
> >
> > The functions mentioned - of course, it were up to an application to
> > decide what to use it in a particular situation, but not forcibly
> > changing the core handling. Like in the snippet above, you would have
> > currently to do dirname(realpath($path)), but that is also not
> > crossplatform and won't work on a nonexistent file. So another
> > function instead of realpath, like dirname(normalize_path($path,
> > UNIXIFY_SLASH)) were in use. The implementation might be tricky in
> > some parts, but in general doable.
> >
> > Regards
> >
> > Anatol
> >
> 
> Well, RFC 8089 has many examples in its appendix regarding Windows. It's true
> that they say that it is non-standard, however, it is how Windows deals with 
> it
> since IE4.
> 
> https://blogs.msdn.microsoft.com/freeassociations/2005/05/19/the-bizarre-
> and-unhappy-story-of-file-urls/
> 
Yeah, though that draft still ignores many Windows variants ☹

We went anyway a bit too deep in this complex matter. Probably a separate 
function is where the opinions could be joined.

Thanks

Anatol

Reply via email to