Bug #80266 [Opn]: parse_url silently drops invalid port number, inconsistent across platforms
| From: | smiley at chillerlan dot net | Date: | Wed, 21 Oct 2020 07:44:18 +0000 |
| Subject: | Bug #80266 [Opn]: parse_url silently drops invalid port number, inconsistent across platforms | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-229830@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=80266&edit=1
ID: 80266
User updated by: smiley at chillerlan dot net
Reported by: smiley at chillerlan dot net
Summary: parse_url silently drops invalid port number,
inconsistent across platforms
Status: Open
Type: Bug
Package: *URL Functions
Operating System: Windows
PHP Version: 8.0.0RC2
Block user comment: N
Private report: N
New Comment:
@cmb: in fact, you could reproduce what the Windows build of the GH actions runner didn't.
Aside, if this is now expected behaviour, why is the "port" key with a value 0 missing in
the array - according to the previously linked bug, the port number 0 should be treated as valid?
Previous Comments:
------------------------------------------------------------------------
[2020-10-21 07:36:40] cmb@php.net
$ x64\Debug\php -v
PHP 8.0.0-dev (cli) (built: Oct 16 2020 18:46:05) ( NTS Visual C++ 2019 x64 DEBUG )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
C:\php-sdk\phpdev\vs16\x64\php-src-8.0
$ x64\Debug\php -r "var_dump(parse_url('//portcannotbezero.com:0'));"
array(1) {
["host"]=>
string(20) "portcannotbezero.com"
}
IOW, I cannot reproduce.
------------------------------------------------------------------------
[2020-10-21 07:00:33] smiley at chillerlan dot net
Since this was marked as "Not a bug", i'd like to point out the inconsistency across
the several platforms, as well as the current behaviour in userland. The used test stems from
current PSR-7 implementations where it is expected to be an invalid URI. See also: https://github.com/guzzle/psr7/blob/7858757f390bbe4b3d81762a97d6e6e786bb70ad/tests/UriTest.php#L137
------------------------------------------------------------------------
[2020-10-21 06:55:45] requinix@php.net
@sjon: But apparently the Windows builds aren't showing this new behavior.
------------------------------------------------------------------------
[2020-10-21 06:51:40] sjon@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
This is not a bug, for an extensive explanation see Bug #80114
https://bugs.php.net/bug.php?id=80114
------------------------------------------------------------------------
[2020-10-21 06:38:00] smiley at chillerlan dot net
Description:
------------
In the current PHP 8 nightly Linux builds, parse_url() drops silently an invalid port number 0 and
returns an array with the host part of an otherwise invalid URI.
PHP 7 on Linux & Windows, as well as PHP 8 on Windows will return false instead, which is
expected.
https://github.com/chillerlan/php-httpinterface/runs/1284984428#step:10:21
https://travis-ci.org/github/chillerlan/php-httpinterface/jobs/737623526#L288
Test script:
---------------
$parsed = parse_url('//portcannotbezero.com:0');
var_dump($parsed);
https://github.com/chillerlan/php-httpinterface/commit/cefbdb1163d508f52f199abd4b958319b48012ba
Source: https://github.com/chillerlan/php-httpinterface/blob/46b563fd9ab2b92c1cf4efa3c429d6872de2eab4/src/Psr7/Uri.php#L65-L69
https://github.com/chillerlan/php-httpinterface/blob/46b563fd9ab2b92c1cf4efa3c429d6872de2eab4/tests/Psr7/UriTest.php#L144-L149
(similar to guzzle/psr7)
Expected result:
----------------
parse_url('//portcannotbezero.com:0') should return the same result "false"
across all platforms.
https://github.com/chillerlan/php-httpinterface/runs/1284984456
https://travis-ci.org/github/chillerlan/php-httpinterface/jobs/737623525#L287
Actual result:
--------------
array(1) {
'host' =>
string(20) "portcannotbezero.com"
}
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=80266&edit=1