#33138 [Bgs]: parse_url() wrongly handles relative URIs with ':'
| From: | iliaa@php.net | Date: | Wed, 25 May 2005 21:38:01 +0000 |
| Subject: | #33138 [Bgs]: parse_url() wrongly handles relative URIs with ':' | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-79502@lists.php.net to get a copy of this message | ||
ID: 33138
Updated by: iliaa@php.net
Reported By: moriyoshi@php.net
Status: Bogus
Bug Type: URL related
Operating System: Irrelevant
PHP Version: 4.3.11
New Comment:
At the moment the code follows the RFC 1738 with some additions, which
is the URL specification. As far as adding partial URL support, please
consider the following; c?d:e, c?d:, etc... are all valid file names,
at least on *NIX.
The only bug I see here is that we "break" the spec and allow scheme to
contain non-valid chars such as / and ?. In all of the provided examples
the path should contain the entire string.
Previous Comments:
------------------------------------------------------------------------
[2005-05-25 21:02:48] moriyoshi@php.net
Wouldn't it be handy if the *URI* syntax (or RFC1808 at
least) is supported in addition to the URL syntax?
As it can already handle relative pathes just partly at
the moment, there shouldn't be no BC problem.
------------------------------------------------------------------------
[2005-05-25 20:49:52] iliaa@php.net
There is no requirment to support relative URL. All of the URLs with
which URL RFC deals have a sheme or equivalent.
------------------------------------------------------------------------
[2005-05-25 19:03:41] moriyoshi@php.net
Is there any specification that suggests relative URI's
point to local resources by default? Otherwise
parse_url() is not supposed to conform to the RFC.
------------------------------------------------------------------------
[2005-05-25 17:10:31] iliaa@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
A URL without a schema default to a local file, a locale file cannot
have GET parameters. Hence the error, there is no bug here.
------------------------------------------------------------------------
[2005-05-25 15:34:11] moriyoshi@php.net
Description:
------------
parse_url() cannot handle relative URIs (ones without
schemes) that contains ':' within the queries.
Reproduce code:
---------------
var_dump(parse_url('/a/b/c'));
var_dump(parse_url('/a/b/c?d:'));
var_dump(parse_url('/a/b/c?d:e'));
Expected result:
----------------
array(1) {
["path"]=>
string(6) "/a/b/c"
}
array(2) {
["path"]=>
string(6) "/a/b/c"
["query"]=>
string(6) "d:"
}
array(2) {
["path"]=>
string(6) "/a/b/c"
["query"]=>
string(6) "d:e"
}
Actual result:
--------------
array(1) {
["path"]=>
string(6) "/a/b/c"
}
Warning: parse_url(/a/b/c?d:): Unable to parse url in
Command line code on line 2
bool(false)
array(2) {
["scheme"]=>
string(8) "/a/b/c?d"
["path"]=>
string(1) "e"
}
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=33138&edit=1