Table of Contents
One of the biggest update introduced with MediaWiki build 1.26.2 and above is the extensive use of Composer, a dependency manager for PHP: in short words, Composer is something very close to what NPM is for Node.js, meaning that it can be used to automatically fetch, update and mantain the package dependencies for your project, keeping them up-to-date. However, instead of storing them within a global folder, it will manage the packages on a per-project basis, installing them in a directory (e.g. vendor) that will be added to each specific project. This is the perfect cup of tea for any seasoned Linux system administrator, yet it can be quite hard to understand for those used to work on Windows servers.
We’ll talk more about the interactions between Composer and the latest MediaWiki builds in an upcoming article: for now we’ll address a very specific issue regarding how we can use Compose to fix a bug with the SyntaxHighlight extension, formerly known as SyntaxHighlight_GeSHI (click here for more info) that will often happen after upgrading a MediaWiki installation to 1.26.2 or above (including 1.27).
If you’ve stumbled upon this post it most likely means that your MediaWiki installation is broken, showing the following error:
Fatal error: Class ‘Symfony\Component\Process\ProcessBuilder’ not found in /app/mediawiki/mw/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.class.php on line 283
Disabling the extension in the MediaWiki’s LocalSettings.php file fixes it, but if you do that you will lose the Syntax Highlighting features of your Wiki.
Luckily enough, the issue is quite easy to fix. You basically need to update your SyntaxHighlighter extension to the latest release matching your MediaWiki build and then update its dependencies using Composer.
This can be easily done by downloading the latest snapshot from the official MediaWiki’s ExtensionDistributor page. Ensure to select the snapshot matching your MediaWiki build, then unpack it and replace your outdated version with the contained files. Technically you can just unpack the new build over your previous one, however it’s strongly suggested to move the existing ones into a backup folder (and delete them afterwards), so you will be able to recover them in case something goes wrong – or get rid of the deleted files if everything goes ok.
Update dependencies with Composer
As soon as you installed the SyntaxHighlighter updated build, open a Command Prompt with administrative priviledges (or a Linux shell if you’re on Linux), navigate through the extension root folder and execute the following commands, one after another:
This will tell Composer to process the composer.json file shipped with the extension and update its dependencies accordingly. Needless to say, in order to do this you’ll need to have Composer installed and properly configured in your PATH environment variable. If you need advices on how to do that, leave a comment explaining your issue and I’ll try to help with a separate post.
As soon as you do that, you should be able to re-enable the SyntaxHighlight extension in your MediaWiki’s LocalSettings.php file: the above error should be gone for good.
However, if you check a page containing code, you could experience the fact that the SyntaxHighlight extension, while apparently working without issues, doesn’t actually “highlight” your code anymore. If you experience that, you will most likely need to read the following paragraph as well.
If the SyntaxHighlight extension ceased to work after upgrading it, it can be due to the fact that you haven’t Pygmentize installed. As you might already know, Pygmentize is a Phyton general purpose syntax highlighter library package: the MediaWiki SyntaxHighlight extension switched from GeSHi to Pygmentize since June 2015, meaning that if you want to use a post-june 2015 build you need to have Pygmentize installed on the web server hosting your wiki. Needless to say, since it’s a Phyton library, you need to install Phyton as well.
I know what you’re thinking: Why should I do that? GeSHi didn’t require anything like that! Well, that’s right: GeSHi was a stand-alone PHP package, so it could be shipped across third-party applications – including MediaWiki extensions – without having to manually install it. On the other hand, Pygmentize is faster and more powerful, so it’s well worth the additional work we need to do to set it up.
Here’s what you need to do:
- Install Python 2.7 from the official download page (3.5.2 won’t be compatible with Pygmentize‘s current build).
- Open a Command Prompt with administrative priviledges, navigate into the /Python27/Scripts folder and type the following:
This will install the latest version of pygmentize using pip, the Python package manager (which comes shipped with Python since 2.7.9).1pip install pygmentize
- Open the MediaWiki‘s LocalSettings.php page and add the following line right after the wfLoadExtension command to install the SyntaxHighlight extension:
Replace c:\\python27 with your Python installation folder if needed.1wfLoadExtension( 'SyntaxHighlight_GeSHi' );
As soon as you do that, the SyntaxHighlight extension should start highlighting your code again.
That’s it for now: happy syntax highlightning!