Error
Request URL: donatewiki /w/index.php?title=Special:LandingPage&country=CN& … &vars[]=x& …
Request ID: XRE3bQpAMEoAAD6Z5ZEAAAAG
PHP Warning: preg_match() expects parameter 2 to be string, array given
#0 /srv/mediawiki/php-1.34.0-wmf.10/extensions/FundraiserLandingPage/includes/specials/FundraiserLandingPage.php(113): MWExceptionHandler::handleError(integer, string, string, integer, array, array) #1 /srv/mediawiki/php-1.34.0-wmf.10/extensions/FundraiserLandingPage/includes/specials/FundraiserLandingPage.php(79): FundraiserLandingPage::fundraiserLandingPageMakeSafe(array) #2 /srv/mediawiki/php-1.34.0-wmf.10/includes/specialpage/SpecialPage.php(571): FundraiserLandingPage->execute(NULL) #3 /srv/mediawiki/php-1.34.0-wmf.10/includes/specialpage/SpecialPageFactory.php(575): SpecialPage->run(NULL) #4 /srv/mediawiki/php-1.34.0-wmf.10/includes/MediaWiki.php(288): MediaWiki\Special\SpecialPageFactory->executePath(Title, RequestContext) #5 /srv/mediawiki/php-1.34.0-wmf.10/includes/MediaWiki.php(865): MediaWiki->performRequest() #6 /srv/mediawiki/php-1.34.0-wmf.10/includes/MediaWiki.php(515): MediaWiki->main() #7 /srv/mediawiki/php-1.34.0-wmf.10/index.php(42): MediaWiki->run() #8 /srv/mediawiki/w/index.php(3): include(string)
Notes
The code is taking arbitrary query parameters and turning them into wikitext template invocation parameters.
The code has a blacklist of parameters it does not allow to be passed. For the remaining ones, a regular expression is used as additional filter. However, the preg_match function itself is passed with invalid parameters sometimes (the second parameter is arbitrary user input and can be an array instead of a string, given that PHP supports natively to pass arrays as query string parameters).
In this case the function emits a warning, which the code does not expect or handle.
Impact
It looks like in this case preg_match decides that the pattern doesn't match, and does not string-cast. The outcome is that the parameter is ignored, which coincidentally is probably what you would want the code to do anyway.
If that is indeed the desirable outcome, it should be coded that way. E.g. by rejecting non-string parameters or by suppressing the warning from preg_match().