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 <ras...@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
> 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?

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to