Page MenuHomePhabricator

CirrusSearch ParseError: "syntax error, unexpected token "match", expecting ":"" (collision with new PHP8 match keyword?)
Closed, DuplicatePublic

Description

I was forced to upgrade to PHP 8.0 and as a result had to upgrade MediaWiki to 1.35.1, along with all the extensions, including CirrusSearch and Elastica. I'm now getting the error below.

I know little about PHP, but I tried to follow the bouncing ball in a (feeble) attempt to fix it. I see Match is defined in extensions/Elastica/vendor/ruflin/elastica/lib/Elastica/QueryBuilder/DSL/Query.php, butI don't understand why it doesn't like it.

Any ideas?

[e88ce53b7c6f7c9436e4010c] /mediawiki/index.php?title=Special%3ASearch&search=brew&go=Go ParseError from line 124 of /var/www/localhost/htdocs/mediawiki/extensions/CirrusSearch/includes/Query/SubPageOfFeature.php: syntax error, unexpected token "match", expecting ":"

Backtrace:

#0 /var/www/localhost/htdocs/mediawiki/extensions/CirrusSearch/includes/Parser/FullTextKeywordRegistry.php(82): AutoLoader::autoload()
#1 /var/www/localhost/htdocs/mediawiki/extensions/CirrusSearch/includes/Parser/QueryParserFactory.php(33): CirrusSearch\Parser\FullTextKeywordRegistry->__construct()
#2 /var/www/localhost/htdocs/mediawiki/extensions/CirrusSearch/includes/Search/SearchQueryBuilder.php(120): CirrusSearch\Parser\QueryParserFactory::newFullTextQueryParser()
#3 /var/www/localhost/htdocs/mediawiki/extensions/CirrusSearch/includes/CirrusSearch.php(216): CirrusSearch\Search\SearchQueryBuilder::newFTSearchQueryBuilder()
#4 /var/www/localhost/htdocs/mediawiki/includes/search/SearchEngine.php(95): CirrusSearch\CirrusSearch->doSearchText()
#5 /var/www/localhost/htdocs/mediawiki/includes/search/SearchEngine.php(187): SearchEngine->{closure}()
#6 /var/www/localhost/htdocs/mediawiki/includes/search/SearchEngine.php(96): SearchEngine->maybePaginate()
#7 /var/www/localhost/htdocs/mediawiki/includes/specials/SpecialSearch.php(388): SearchEngine->searchText()
#8 /var/www/localhost/htdocs/mediawiki/includes/specials/SpecialSearch.php(179): SpecialSearch->showResults()
#9 /var/www/localhost/htdocs/mediawiki/includes/specialpage/SpecialPage.php(600): SpecialSearch->execute()
#10 /var/www/localhost/htdocs/mediawiki/includes/specialpage/SpecialPageFactory.php(635): SpecialPage->run()
#11 /var/www/localhost/htdocs/mediawiki/includes/MediaWiki.php(307): MediaWiki\SpecialPage\SpecialPageFactory->executePath()
#12 /var/www/localhost/htdocs/mediawiki/includes/MediaWiki.php(940): MediaWiki->performRequest()
#13 /var/www/localhost/htdocs/mediawiki/includes/MediaWiki.php(543): MediaWiki->main()
#14 /var/www/localhost/htdocs/mediawiki/index.php(53): MediaWiki->run()
#15 /var/www/localhost/htdocs/mediawiki/index.php(46): wfIndexMain()
#16 {main}

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript
Aklapper renamed this task from CirrusSearch generates ParseError with MW 1.35.1 & PHP 8.0 to CirrusSearch ParseError: "syntax error, unexpected token "match", expecting ":"" (collision with new PHP8 match keyword?).Feb 18 2021, 10:23 PM

1.35 doesn't fully support PHP 8, and neither does CirrusSearch or the dependancies it uses; ruflin/elastica and elasticsearch/elasticsearch.

See T271777: Bump rufin/elastica (and related libraries) to versions that support PHP 8.0 and T268861: CirrusSearch uses Elastica's Match class

For the dependancies, they have only just been released, so haven't been integrate, as we're partially blocked on T263142: [EPIC] Upgrade Elasticsearch to version 7.10

Seems Debian Buster currently has 7.4.15 available, and MW stable wants 7.4.19 minimum. PHP 8.0.2 got installed, and that broke things.

I'll just deal with not having searching available until everything supports 8. I just love breaking changes in languages. Thank Dog MW doesn't use Python...

Thanks for the info on this issue. Y'all do great work!

Seems Debian Buster currently has 7.4.15 available, and MW stable wants 7.4.19 minimum.

I think you're off by one :)

7.3.19 is the min PHP version in MW 1.35 - https://github.com/wikimedia/mediawiki/blob/REL1_35/composer.json#L40

In Debian Stable (Buster) it has 7.3.27 - https://packages.debian.org/buster/php7.3

PHP 7.4 only goes upto 7.4.15 so far - https://www.php.net/ChangeLog-7.php#7.4.15