Page MenuHomePhabricator

PHP 8: parse_url() change causes a parser test failure
Closed, ResolvedPublic

Description

It looks like the behavior of parse_url changed slightly with PHP 8.

Taking var_dump(parse_url('http://www.usemod.com/cgi-bin/mb.pl?')); as an example:

  • PHP 7.3:
array(3) {
  'scheme' =>
  string(4) "http"
  'host' =>
  string(14) "www.usemod.com"
  'path' =>
  string(14) "/cgi-bin/mb.pl"
}

PHP 8:

array(4) {
  ["scheme"]=>
  string(4) "http"
  ["host"]=>
  string(14) "www.usemod.com"
  ["path"]=>
  string(14) "/cgi-bin/mb.pl"
  ["query"]=>
  string(0) ""
}

Note how PHP 8 returns an empty query item. This causes the parser test for T4372 to break:

Running test Inline interwiki link with empty title (T4372)... FAILED!
/Users/mateszabo/Wikia/mwdev/mediawiki/tests/parser/parserTests.txt:9205
--- /private/var/folders/d6/jvhxxmt929958g4m4h8j2byw0000gn/T/mwParser-expectedXggzpO	2020-11-26 22:39:46.000000000 +0100
+++ /private/var/folders/d6/jvhxxmt929958g4m4h8j2byw0000gn/T/mwParser-actualtXLlOI	2020-11-26 22:39:46.000000000 +0100
@@ -1,2 +1,2 @@
-<p><a href="http://www.usemod.com/cgi-bin/mb.pl" class="extiw" title="meatball:">MeatBall:</a>
+<p><a href="http://www.usemod.com/cgi-bin/mb.pl?" class="extiw" title="meatball:">MeatBall:</a>
 </p>

Event Timeline

Change 643773 had a related patch set uploaded (by TK-999; owner: TK-999):
[mediawiki/core@master] wfAssembleUrl: Handle empty query field in URL bits

https://gerrit.wikimedia.org/r/643773

Change 643787 had a related patch set uploaded (by Reedy; owner: TK-999):
[mediawiki/core@REL1_35] wfAssembleUrl: Handle empty query field in URL bits

https://gerrit.wikimedia.org/r/643787

Change 643787 merged by jenkins-bot:
[mediawiki/core@REL1_35] wfAssembleUrl: Handle empty query field in URL bits

https://gerrit.wikimedia.org/r/643787

Change 643773 merged by jenkins-bot:
[mediawiki/core@master] wfAssembleUrl: Handle empty query field in URL bits

https://gerrit.wikimedia.org/r/643773

Reedy assigned this task to TK-999.
Reedy added a project: MW-1.35-release.

Change 643781 had a related patch set uploaded (by Krinkle; owner: Krinkle):
[mediawiki/core@master] GlobalFunctions: Unbreak handling of '?0' query in wfAssembleUrl()

https://gerrit.wikimedia.org/r/643781

Change 643790 had a related patch set uploaded (by Reedy; owner: Krinkle):
[mediawiki/core@REL1_35] GlobalFunctions: Unbreak handling of '?0' query in wfAssembleUrl()

https://gerrit.wikimedia.org/r/643790

Change 643790 merged by jenkins-bot:
[mediawiki/core@REL1_35] GlobalFunctions: Unbreak handling of '?0' query in wfAssembleUrl()

https://gerrit.wikimedia.org/r/643790

Change 643781 merged by jenkins-bot:
[mediawiki/core@master] GlobalFunctions: Unbreak handling of '?0' query in wfAssembleUrl()

https://gerrit.wikimedia.org/r/643781