Invalid magic words

Fremantle

· MediaWiki ·

Recently I've been getting annoying intermittent errors about invalid magic words, but usually only after updating MediaWiki core:

  • UnexpectedValueException: Error: invalid magic word 'if'
  • "" is not a valid magic word for "if"

(In this case the {{#if:}} parser function comes from the ParserFunctions extension, but the errors happen usually with whichever magic-word-using extension is loaded first in LocalSettings.php.)

It seems that these stem from the $wgLocalisationCacheConf['store'] = 'array' in DevelopmentSettings.php, which means that the localisation cache is stored serialized in text files in the cache directory.

The problem is that DevelopmentSettings.php also defines $wgCacheDirectory as follows:

$wgCacheDirectory = TempFSFile::getUsableTempDirectory() .
	DIRECTORY_SEPARATOR .
	rawurlencode( MediaWiki\WikiMap\WikiMap::getCurrentWikiId() );

Which uses the wiki ID in the directory name. This would be fine, but for the fact that I have a weird set-up and define the wiki ID myself (based on various things that I'll go into in a separate post).

So the fix is to make sure I define $wgCacheDirectory after including DevelopmentSettings.php:

$wgCacheDirectory = __DIR__ . '/cache-' . $wikiId . '/';