Bug #80266 [Opn]: parse_url silently drops invalid port number, inconsistent across platforms

From: 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

« previous php.bugs (#229830) next »