Jump to content
  • 0

Composer and Chameleon



I am rather new to actually handling a server setup for MW . Use MW in the past a lot, but never as host or administrator.

So now I am building one, with all the new things that entails. 

Snag. After browsing themes that may be usable for an initial layout I came across Chameleon, but the installation instructions are not easy to follow since they do not give the desired result, whenevr i try to "activate" the theme via load in LocalSettings the site crashes.
Allow me to link my conversation with one of the Chameleon maintainers at Github.


 Somethings feels wrong and I have yet to test the very last option given, but has any of you guys done this successfully?

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Pretty standard composer stuff, but it's very intimidating if you aren't already familiar with it. The last response in that linked issue is correct -- you need to run the composer command from your wiki root (same directory where LocalSettings.php is).

You may have casing issues as well. Generally speaking (and I cannot confirm whether this is correct for chameleon or not), the value for $wgDefaultSkin must be all lowercase but the value inside of wfLoadSkin() should have a capital first letter.

Link to comment
Share on other sites

  • 0

Intimidating? Hell yeah... ;) Afraid to use? Not under these conditions, no, setting up something from scratch, on a working prod site, doubting it more.

I actually found something that may be causing issues. https://en.wikipedia.org/wiki/Installatron

It does not put 100% of MW files where they should be, causing some difference's in environment. It does have a few advantages, like automated backups to external repositories, but I should have suspected this from the start.

So I started from scratch - again -

Editing composer.local.json

The line to add may be right, but the resulting content should be 

    "require": {
        "mediawiki/chameleon-skin": "~2.0"
    "extra": {
        "merge-plugin": {
            "include": [

One tends to attach additional lines going downwards, this is actually the opposite, you insert the lines before. I don't really know how important this is, but the result would have been this, following the instructions.

	"extra": {
		"merge-plugin": {
			"include": [
"require": {
    "mediawiki/chameleon-skin": "~2.0"

It is only when looking at advanced instructions over at https://github.com/cmln/chameleon/blob/master/docs/installation-linux.md that you see how the file should look like, the top example is right...Nesting is correct and the code is cleaner.


Following this: https://getcomposer.org/download/

[pdswikisit@ns2 public_html]$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
[pdswikisit@ns2 public_html]$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Installer verified
[pdswikisit@ns2 public_html]$ php composer-setup.php
All settings correct for using Composer

Composer (version 1.9.0) successfully installed to: /home/pdswikisit/domains/pointdefensesystems.net/public_html/composer.phar
Use it: php composer.phar

[pdswikisit@ns2 public_html]$ php -r "unlink('composer-setup.php');"
[pdswikisit@ns2 public_html]$

resulted in a composer.phar file in my web root. This time I actually run ALL of those scripts. Not just the get composer part but lines 2-3-4 as well.

After that I ran the following, please not the errors, building up for the proper syntax in my environment (CloudLinux)

[pdswikisit@ns2 public_html]$ composer update "mediawiki/chameleon-skin"                                                                                      -bash: composer: command not found
[pdswikisit@ns2 public_html]$ php composer update "mediawiki/chameleon-skin"
Could not open input file: composer
[pdswikisit@ns2 public_html]$ php composer.phar update "mediawiki/chameleon-skin"
> ComposerHookHandler::onPreUpdate
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 61 installs, 0 updates, 0 removals
  - Installing composer/installers (v1.7.0): Loading from cache
  - Installing psr/cache (1.0.1): Downloading (100%)
  - Installing cache/tag-interop (1.0.0): Downloading (100%)
  - Installing cache/integration-tests (0.16.0): Downloading (100%)
  - Installing giorgiosironi/eris (0.10.0): Downloading (100%)
  - Installing jakub-onderka/php-parallel-lint (v0.9.2): Loading from cache
  - Installing squizlabs/php_codesniffer (3.4.1): Downloading (100%)
  - Installing composer/spdx-licenses (1.4.0): Downloading (100%)
  - Installing mediawiki/mediawiki-codesniffer (25.0.0): Downloading (100%)
  - Installing monolog/monolog (1.22.1): Downloading (100%)
  - Installing seld/jsonlint (1.7.1): Downloading (100%)
  - Installing nmred/kafka-php (v0.1.5): Downloading (100%)
  - Installing jakub-onderka/php-console-color (v0.2): Downloading (100%)
  - Installing jakub-onderka/php-console-highlighter (v0.3.2): Downloading (100%)
  - Installing dnoegel/php-xdg-base-dir (0.1): Downloading (100%)
  - Installing nikic/php-parser (v3.1.5): Downloading (100%)
  - Installing symfony/polyfill-php72 (v1.12.0): Downloading (100%)
  - Installing symfony/var-dumper (v4.3.5): Downloading (100%)
  - Installing psr/container (1.0.0): Downloading (100%)
  - Installing symfony/service-contracts (v1.1.7): Downloading (100%)
  - Installing symfony/polyfill-php73 (v1.12.0): Downloading (100%)
  - Installing symfony/console (v4.3.5): Downloading (100%)
  - Installing psy/psysh (v0.9.9): Downloading (100%)
  - Installing wikimedia/testing-access-wrapper (1.0.0): Downloading (100%)
  - Installing mediawiki/mediawiki-phan-config (0.5.0): Downloading (100%)
  - Installing leafo/scssphp (v0.7.8): Downloading (100%)
  - Installing mediawiki/scss (1.0): Downloading (100%)
  - Installing mediawiki/mw-extension-registry-helper (1.2.1): Downloading (100%)
  - Installing mediawiki/bootstrap (4.0): Downloading (100%)
  - Installing mediawiki/chameleon-skin (2.1.0): Downloading (100%)
  - Installing justinrainbow/json-schema (5.2.9): Downloading (100%)
  - Installing sebastian/version (2.0.1): Downloading (100%)
  - Installing sebastian/resource-operations (1.0.0): Downloading (100%)
  - Installing sebastian/recursion-context (3.0.0): Downloading (100%)
  - Installing sebastian/object-reflector (1.1.1): Downloading (100%)
  - Installing sebastian/object-enumerator (3.0.3): Downloading (100%)
  - Installing sebastian/global-state (2.0.0): Downloading (100%)
  - Installing sebastian/exporter (3.1.2): Downloading (100%)
  - Installing sebastian/environment (3.1.0): Downloading (100%)
  - Installing sebastian/diff (2.0.1): Downloading (100%)
  - Installing sebastian/comparator (2.1.3): Downloading (100%)
  - Installing doctrine/instantiator (1.2.0): Downloading (100%)
  - Installing phpunit/php-text-template (1.2.1): Downloading (100%)
  - Installing phpunit/phpunit-mock-objects (5.0.10): Downloading (100%)
  - Installing phpunit/php-timer (1.0.9): Downloading (100%)
  - Installing phpunit/php-file-iterator (1.4.5): Downloading (100%)
  - Installing theseer/tokenizer (1.1.3): Downloading (100%)
  - Installing sebastian/code-unit-reverse-lookup (1.0.1): Downloading (100%)
  - Installing phpunit/php-token-stream (2.0.2): Downloading (100%)
  - Installing phpunit/php-code-coverage (5.3.2): Downloading (100%)
  - Installing webmozart/assert (1.5.0): Downloading (100%)
  - Installing phpdocumentor/reflection-common (2.0.0): Downloading (100%)
  - Installing phpdocumentor/type-resolver (1.0.1): Downloading (100%)
  - Installing phpdocumentor/reflection-docblock (4.3.2): Downloading (100%)
  - Installing phpspec/prophecy (1.9.0): Downloading (100%)
  - Installing phar-io/version (1.0.1): Downloading (100%)
  - Installing phar-io/manifest (1.0.1): Downloading (100%)
  - Installing myclabs/deep-copy (1.9.3): Downloading (100%)
  - Installing phpunit/phpunit (6.5.14): Downloading (100%)
  - Installing hamcrest/hamcrest-php (v2.0.0): Downloading (100%)
  - Installing wmde/hamcrest-html-matchers (v0.1.1): Downloading (100%)
giorgiosironi/eris suggests installing icomefromthenet/reverse-regex (v0.0.6.3 for the regex() Generator)
monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing sentry/sentry (Allow sending log messages to a Sentry server)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
monolog/monolog suggests installing ruflin/elastica (Allow sending log messages to an Elastic Search server)
monolog/monolog suggests installing php-amqplib/php-amqplib (Allow sending log messages to an AMQP server using php-amqplib)
monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
monolog/monolog suggests installing mongodb/mongodb (Allow sending log messages to a MongoDB server via PHP Driver)
monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)
monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)
monolog/monolog suggests installing php-console/php-console (Allow sending log messages to Google Chrome)
symfony/service-contracts suggests installing symfony/service-implementation
symfony/console suggests installing symfony/event-dispatcher
symfony/console suggests installing symfony/lock
symfony/console suggests installing symfony/process
psy/psysh suggests installing ext-pdo-sqlite (The doc command requires SQLite to work.)
psy/psysh suggests installing hoa/console (A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit.)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/php-code-coverage suggests installing ext-xdebug (^2.5.5)
phpunit/phpunit suggests installing phpunit/php-invoker (^1.1)
phpunit/phpunit suggests installing ext-xdebug (*)
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating optimized autoload files
> ComposerVendorHtaccessCreator::onEvent
[pdswikisit@ns2 public_html]$

That was WAY more than expected..... and is not advertised in any way by the Chameleon guys... which would have been a good headsup.

I only expected this line

- Installing mediawiki/chameleon-skin (2.1.0): Downloading (100%)

Looking back at the file structure is seems ok from root dir, but /vendor/ has a lot more in it. And the Chameleon actually gets in to the default MW skin folder, which did not happen before. Chameleon with a lowercase c, as in chameleon.


Now, lets see about the editing of LocalSettings.php. Tension is building up.

Editing these lines from

## Default skin: you can change the default skin. Use the internal symbolic
## names, ie 'vector', 'monobook':
$wgDefaultSkin = "timeless";

# Enabled skins.
# The following skins were automatically enabled:
wfLoadSkin( 'MonoBook' );
wfLoadSkin( 'Timeless' );
wfLoadSkin( 'Vector' );


## Default skin: you can change the default skin. Use the internal symbolic
## names, ie 'vector', 'monobook':
$wgDefaultSkin = "timeless";

# Enabled skins.
# The following skins were automatically enabled:
wfLoadSkin( 'MonoBook' );
wfLoadSkin( 'Timeless' );
wfLoadSkin( 'Vector' );
wfLoadSkin( 'chameleon' );

checking the spelling and characters of chameleon to correspond to the name of the created directory.


Checking "Special:Version" - Yeah, its there all right!

Changing Preferences to Chameleon, preview looks good (with a capital "C", no typo there....)

More reading: https://www.mediawiki.org/wiki/Manual:Skin_configuration and even more reading: https://www.mediawiki.org/wiki/Help:Preferences

Case closed. Next. (Find out how you select/alter more stuff for Chameleon)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.