Affected versions
This is happening when testing MediaWiki 1.36-rc.0
Testing this on mediawiki.org doesn't cause this issue (maybe it has been fixed and needs a backport?)
Testing on MediaWiki 1.35 doesn't cause this issue
Steps to reproduce
- Go to MediaWiki:Common.css
- Add some valid CSS styles, including this one: #test { background:url('/resources/src/mediawiki.skinning/images/spinner.gif'); }
- Save the page
Expected results
You get those styles applied
Actual results
No style from the page is applied (including MediaWiki:"skinname".css).
This can be tested on a personal css page, or hitting preview.
Real-life impact
I'm testing an upgrade to MediaWiki 1.36.rc.0 from MediaWiki 1.34
Our wiki has some script that wants to display a spinner gif, and we found one that ships with MediaWiki located at /resources/src/mediawiki.skinning/images/spinner.gif (previously inside the mediawiki.legacy folder).
Because of that, we had this in MediaWiki:Common.css:
.imageswitch_state_loading { background:url('/resources/src/mediawiki.skinning/images/spinner.gif') center no-repeat; }
When upgraded, styles were not being displayed. When looking for errors in logs I found this:
2021-05-07 20:00:18 test1wikidex23 wikidexwiki: [e75f78c265f41acaba826861] /load.php?lang=es&modules=site.styles& Exception: Base-URL must be absolute if reference is not fragment-only #0 $IP/vendor/wikimedia/minify/src/CSSMin.php(414): Net_URL2->resolve(Net_URL2) #1 $IP/vendor/wikimedia/minify/src/CSSMin.php(441): Wikimedia\Minify\CSSMin::resolveUrl(string, string) #2 $IP/vendor/wikimedia/minify/src/CSSMin.php(327): Wikimedia\Minify\CSSMin::remapOne(string, string, boolean, string, boolean) #3 [internal function]: Wikimedia\Minify\CSSMin::Wikimedia\Minify\{closure}(array) #4 $IP/vendor/wikimedia/minify/src/CSSMin.php(316): preg_replace_callback(string, Closure, string) #5 [internal function]: Wikimedia\Minify\CSSMin::Wikimedia\Minify\{closure}(array) #6 $IP/vendor/wikimedia/minify/src/CSSMin.php(292): preg_replace_callback(string, Closure, string) #7 $IP/includes/libs/MemoizedCallable.php(128): Wikimedia\Minify\CSSMin::remap(string, boolean, string, boolean) #8 $IP/includes/libs/MemoizedCallable.php(158): MemoizedCallable->invokeArgs(array) #9 $IP/includes/resourceloader/ResourceLoaderWikiModule.php(309): MemoizedCallable::call(array, array) #10 $IP/includes/resourceloader/ResourceLoaderModule.php(773): ResourceLoaderWikiModule->getStyles(ResourceLoaderContext) #11 $IP/includes/resourceloader/ResourceLoaderModule.php(721): ResourceLoaderModule->buildContent(ResourceLoaderContext) #12 $IP/includes/resourceloader/ResourceLoader.php(1188): ResourceLoaderModule->getModuleContent(ResourceLoaderContext) #13 $IP/includes/resourceloader/ResourceLoader.php(896): ResourceLoader->makeModuleResponse(ResourceLoaderContext, array, array) #14 $IP/load.php(51): ResourceLoader->respond(ResourceLoaderContext) #15 $IP/load.php(38): wfLoadMain()
I looked at our MediaWiki:Common.css page and found the url() statements with relative URLs. Making them absolute fixed the issue, but it was nasty to get the wiki without any CSS customization because of this.