PHPackages                             kostajh/mediawiki-dev-env - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [DevOps &amp; Deployment](/categories/devops)
4. /
5. kostajh/mediawiki-dev-env

ActiveLibrary[DevOps &amp; Deployment](/categories/devops)

kostajh/mediawiki-dev-env
=========================

Development environment for MediaWiki

12[1 PRs](https://github.com/kostajh/mediawiki-dev-env/pulls)PHP

Since Dec 3Pushed 1y ago1 watchersCompare

[ Source](https://github.com/kostajh/mediawiki-dev-env)[ Packagist](https://packagist.org/packages/kostajh/mediawiki-dev-env)[ RSS](/packages/kostajh-mediawiki-dev-env/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (2)Used By (0)

MediaWiki DevEnv
================

[](#mediawiki-devenv)

Experimental project to combine best parts of various MediaWiki development environments.

tl;dr: PHP process on the host, containers for everything else.

Use the host machine for PHP (speed and ease of use with configuring XDebug, IDE and tools), and containers for heavy lifting of more complicated services (MySQL, Redis, ElasticSearch etc).

Install
-------

[](#install)

Clone MediaWiki core. Create a `composer.local.json` file with these contents:

```
{
  "extra": {
    "merge-plugin": {
      "include": [
        "extensions/*/composer.json",
        "skins/*/composer.json"
      ]
    },
    "installer-paths": {
      "skins/{$name}/": [
        "type:mediawiki-skin"
      ]
    }
  },
  "require": {
    "mediawiki/vector-skin": "dev-master"
  },
  "require-dev": {
	"kostajh/mediawiki-dev-env": "dev-master"
  }
}
```

Run `composer update`.

Usage
-----

[](#usage)

Install MediaWiki: `vendor/bin/mwdev install`

Serve MediaWiki: `vendor/bin/mwdev serve`. Run `vendor/bin/mwdev serve --help` to see how to run with additional services.

The local site URL is `http://127.0.0.1:9412`

Design goals
------------

[](#design-goals)

- Discoverability / ease of use: Project could theoretically become part of require-dev in upstream MediaWiki core's composer.json, but in the meantime it is straightforward to instruct users how to include it as part of their existing Composer setup
- Performance: By not using a container for PHP we sacrifice some ability to reproduce environments in the interest of speed
- Extensible: It should be easy for developers to add additional services using docker-compose to this repo, and for end users to override provided services (via docker-compose.override.yml)
- Ease of use: Abstract away the tedious bits of `maintenance/install.php` and craft a `LocalSettings.php` file when possible
- Reuse in CI: The same install/serve commands should be usable in CI for running integration and end-to-end tests

### Inspiration

[](#inspiration)

- ["QuickWiki"](https://wikitech.wikimedia.org/wiki/Performance/Fresnel#Quick_MediaWiki)
- [Symfony local server](https://symfony.com/doc/current/setup/symfony_server.html)
- [MediaWiki-Docker-Dev](https://www.mediawiki.org/wiki/MediaWiki-Docker-Dev)
- [local-charts](https://gerrit.wikimedia.org/r/plugins/gitiles/releng/local-charts/)
- [Wikimedia TechConf discussion](https://phabricator.wikimedia.org/T238224)

Limitations / Caveats
---------------------

[](#limitations--caveats)

- PHP's built-in server is single threaded. That means if you do things like issue a curl request from within MediaWiki to the same MediaWiki instance, that request will timeout.

Roadmap
-------

[](#roadmap)

- Fix the crufty integration with `docker-compose` commands.
- MySQL container
- Replicated MySQL containers (1 master, one replica)
- ElasticSearch container
- Lightweight proxy for nicer domain names and/or port 80

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance30

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/208893?v=4)[Kosta Harlan](/maintainers/kostajh)[@kostajh](https://github.com/kostajh)

---

Top Contributors

[![kostajh](https://avatars.githubusercontent.com/u/208893?v=4)](https://github.com/kostajh "kostajh (25 commits)")

---

Tags

development-enviromentdockermediawiki

### Embed Badge

![Health badge](/badges/kostajh-mediawiki-dev-env/health.svg)

```
[![Health](https://phpackages.com/badges/kostajh-mediawiki-dev-env/health.svg)](https://phpackages.com/packages/kostajh-mediawiki-dev-env)
```

###  Alternatives

[deployer/deployer

Deployment Tool

11.0k25.4M206](/packages/deployer-deployer)[appwrite/server-ce

End to end backend server for frontend and mobile apps.

55.3k84.2k](/packages/appwrite-server-ce)[pragmarx/health

Laravel Server &amp; App Health Monitor and Notifier

2.0k1.0M2](/packages/pragmarx-health)[felixfbecker/language-server-protocol

PHP classes for the Language Server Protocol

22476.7M6](/packages/felixfbecker-language-server-protocol)[heroku/heroku-buildpack-php

Toolkit for starting a PHP application locally, with or without foreman, using the same config for PHP and Apache2/Nginx as on Heroku

8161.3M10](/packages/heroku-heroku-buildpack-php)[tiamo/phpas2

PHPAS2 is a php-based implementation of the EDIINT AS2 standard

4674.7k](/packages/tiamo-phpas2)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
