Bug #66191 [Com]: relative paths are not handled correctly

From: Date: Wed, 10 Sep 2014 14:11:59 +0000
Subject: Bug #66191 [Com]: relative paths are not handled correctly
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-187497@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=66191&edit=1

 ID:                 66191
 Comment by:         magnusthorek at gmail dot com
 Reported by:        jakoch at web dot de
 Summary:            relative paths are not handled correctly
 Status:             Not a bug
 Type:               Bug
 Package:            Built-in web server
 Operating System:   Windows
 PHP Version:        5.4.22
 Block user comment: N
 Private report:     N

 New Comment:

I can confirm this too. There is even a post of mine in Stack Overflow
(http://stackoverflow.com/questions/25095425/php-built-in-webserver-and-relative-paths) detailing a
whole scenario mainly based in relative paths that does not work as expected.

And it's not only with this application I developed. phpMyAdmin also relies on relative paths
to load their CSS and JS and the "." is being resolved as one level above, right after the
port definition, instead of the current accessed by browser.


Previous Comments:
------------------------------------------------------------------------
[2014-04-05 00:03:00] steve at steveorevo dot com

I can confirm this. Doesn't happen with Apache or Nginx, but visiting a page without the
trailing slash causes subsequent links to fail.

------------------------------------------------------------------------
[2013-11-28 18:07:13] jakoch at web dot de

Demo: https://www.dropbox.com/s/go5ikn4kvryl6e1/php-server-bug.zip

http://localhost:90/application    <-- not working
http://localhost:90/application/   <-- working

Anon, i think you might be right and an implicit redirect would solve this.

------------------------------------------------------------------------
[2013-11-28 16:31:58] anon at anon dot anon

When you browse '/application', the web browser has no way of knowing that
'application' is a directory. It looks like a file in '/'. Consequently, the
base URI is '/', so the browser requests resources relative to there. The correct path you
should be viewing from is '/application/'. Therefore, it's a web server's
responsibility, whenever a directory is requested without a trailing slash, to send a redirect so
that it does have a trailing slash. Apparently this vital redirect isn't being sent. I'm
not familiar with PHP's built-in web server so I can't say if this missing redirect is a
bug in the server or a configuration or user error.

------------------------------------------------------------------------
[2013-11-28 16:13:10] jakoch at web dot de

"Browsers interpret relative URLs relative to the current URL ..."

The current URL is "http://localhost:90/updater" not "http://localhost:90/".
On the screenshot you see, that i get a http code 200 for browsing into the subdir. Then <link
href="assets/css/bootstrap.css" rel="stylesheet"> should resolve to http://localhost:90/updater/assets/css/bootstrap.css,
but it's requested as http://localhost:90/assets/css/bootstrap.css
- logged as "/assets/css/bootstrap.css" - the file is at
/updater/assets/css/bootstrap.css.

Putting http://localhost:90/updater in front of the href
works, but thats not what i want to use, because the page is served with Nginx. And that works...

------------------------------------------------------------------------
[2013-11-28 15:40:23] johannes@php.net

These paths have to be resolved b the browser, not PHP as server. Browsers interpret relative URLs
relative to the current URL ...

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=66191


--
Edit this bug report at https://bugs.php.net/bug.php?id=66191&edit=1


Thread (12 messages)

« previous php.bugs (#187497) next »