Re: Directory separators on Windows

From: Date: Thu, 30 Mar 2017 15:21:23 +0000
Subject: Re: Directory separators on Windows
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-98684@lists.php.net to get a copy of this message
My first thought is UNC paths. On windows a file server share is denoted by \\host\share . if you combine that with relative paths produced from PHP, you end up in the dubious situation of "\\host\share/path/to/file" <--- wat? Overall, it smells of magic. -Sara On Thu, Mar 30, 2017 at 8:25 AM, Rasmus Schultz <rasmus@mindplay.dk> wrote: > Today, I ran into a very hard-to-debug problem, in which paths (to SQL > files, in a database migration script) were kept in a map, persisted to a > JSON file, and this file was moved from a Windows to a Linux file-system - > because the paths on the Linux system had forward slashes, the files > appeared to be missing from the map. > > Related questions are very commonly asked by Windows users, indicating that > this is a common problem: > > > http://stackoverflow.com/questions/14743548/php-on-windows-path-comes-up-with-backward-slash > o > ¹i7ÎÝ˧šu6Eôhttp://stackoverflow.com/questions/5642785/php-a-good-way-to-universalize-paths-across-oss-slash-directions > > http://stackoverflow.com/questions/6510468/is-there-a-way-to-force-php-on-windows-to-provide-paths-with-forward-slashes > > The answers that are usually given (use DIRECTORY_SEPARATOR, use > str_replace() etc.) is that by default you automatically get cross-platform > inconsistencies, and the workarounds end up complicating code everywhere, > and sometimes lead to other (sometimes worse) portability problems. > > The problem is worsened by functions like glob() and the SPL directory/file > traversal objects also producing inconsistent results. > > Returning backslashes on Windows seems rather unnecessary in the first > place, since forward slashes work just fine? > > Might I suggest changing this behavior, such that file-system paths are > consistently returned with a forward slash? > > Though this is more likely to fix rather than create issues, this could be > a breaking change in some cases, so there should probably be an INI setting > that enables the old behavior. > > Thoughts?

« previous php.internals (#98684) next »