PHPUnit installation in Windows

From MoodleDocs

Moodle 2.3

This step-by-step guide is intended for developers only, it cannot be used for production servers!

Before you start

If you see launch as administrator below it means that you need to work around User Account Controls restrictions. There are several ways to do that:

  • Click Start button. Type 'cmd' and, instead of pressing Return, press Ctrl + Shift + Return. This should give you a popup prompt to confirm permissions, then run the command prompt as administrator.
  • Install some file manager such as TotalCommander and launch it using right click + "Run as administrator". Then all programs started from the file manager have full administrative access.
  • Open file Explorer and type "C:\windows\system32", then find cmd.exe and right click and select "Run as administrator".
  • Start the Command Prompt as Administrator by clicking Start, All programs and Accessories, then right-click on Command Prompt link and selecting "Run as Administrator" from the context menu.
  • Temporarily turn off UAC.

It is possible to paste text into command line (cmd.exe) by right-clicking inside the terminal window selecting "Paste".

Install PHP 5.4

  • Create a "C:\server\" directory.
  • Download the latest thread safe PHP 5.4.x installer from (for example
  • Extract the file into "C:\server\PHP\"

Install Apache 2.4

Configure Apache and PHP

  • Set up PATH ENVIRONMENT (System Properties | Advanced | Environment Variables | System variables | Path):
  • Create a "C:\server\workspace" directory and make it read/write for everybody.
  • Edit the "C:\server\Apache24\conf\httpd.conf" file so that it includes the following.
ServerRoot "c:/server/Apache24"
LoadModule php5_module "c:/server/PHP/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "C:/server/PHP"
DocumentRoot "c:/server/workspace"
<Directory "c:/server/workspace">
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
DirectoryIndex index.php index.html
  • Copy "C:\server\PHP\php.ini-developer" to "C:\server\PHP\php.ini" and add
extension_dir = "C:\server\PHP\ext"
date.timezone = "Europe/Prague"
  • Register apache service
c:\server\Apache24\bin\httpd -k install

Verify Apache and PHP configuration

  • Restart windows.
  • Launch cmd.exe as a normal user.
  • Verify
    php.exe --version
    prints version information, if not fix system PATH setting to include "C:\server\PHP".
    • Right-click on My Computer
    • Select Properties
    • If you are using Windows Vista or beyond, click "Advanced system settings". Windows XP users can skip this step.
    • On the Advanced tab, click "Environment Variables".
    • Find the Path variable under "System variables" and edit it.
    • Add your PHP directory path to this variable.
    • Close all System property windows for this to take effect.
    • Restart any cmd.exe terminals to start using the new Path value.
  • Create "C:\server\workspace\index.php" file with the following content.
 echo phpinfo();
  • Open in you browser and verify all necessary extensions, including intl, are present in the list shown.
  • Delete "C:\server\workspace\index.php".

Install PostgreSQL

  • Download PostgreSQL from (for example postgresql-9.3.4-1-windows.exe).
  • Install PostgreSQL with some default locale using UTF-8 (skip the StackBuilder).
  • Launch PgAdmin III - double click on "PostgreSQL 9.3 (localhost:5432)", right-click on "Databases (1)" and create new database called "moodle".

Install MariaDB

  • Download MariaDB from (for example mariadb-5.5.36-win32.msi).
  • Install MariaDB, use UTF-8 as default server's character set.
  • Create moodle database.

Install Git and clone Moodle repository

  • Download git from (for example Git-1.9.0-preview20140217.exe).
  • Install git, use Checkout as-is, commit Unix-style line endings
  • Start "Git bash" (icon on desktop) and clone Moodle using the following commands.
cd /C/server/workspace
git clone git://
  • Close the bash window.

Install Moodle

  • Create a directory called "C:\server\moodledata", make it read/write for everybody.
  • Create a directory called "C:\server\phpu_moodledata", make it read/write for everybody.
  • Create a file "C:\server\workspace\moodle\config.php" with the following content:
<?php  // Moodle configuration file
global $CFG;
$CFG = new stdClass();
$CFG->dbtype    = 'pgsql';
$CFG->dblibrary = 'native';
$CFG->dbhost    = 'localhost';
$CFG->dbname    = 'moodle';
$CFG->dbuser    = 'postgres';
$CFG->prefix    = 'mdl_';
$CFG->dboptions = array (
  'dbpersist' => 0,
  'dbsocket' => '',

// Uncomment to test MySQL compatibility.
$CFG->dbtype    = 'mysqli';
$CFG->dblibrary = 'native';
$CFG->dbhost    = 'localhost';
$CFG->dbname    = 'moodle';
$CFG->dbuser    = 'root';
$CFG->prefix    = 'mdl_';
$CFG->dboptions = array (
  'dbpersist' => 0,
  'dbsocket' => '',

$CFG->wwwroot   = '';
$CFG->dataroot  = 'C:\\server\\moodledata';
$CFG->passwordsaltmain = 'some random rubbish goes here';
$CFG->debug = (E_ALL | E_STRICT);
$CFG->debugdisplay = 1;
$CFG->phpunit_prefix = 'phpu_';
$CFG->phpunit_dataroot = 'C:\\server\\phpu_moodledata';
require_once(dirname(__FILE__) . '/lib/setup.php');

Install Composer dependency manager

Install PHPUnit

  • Launch cmd.exe as normal user and run the following command:
cd C:\server\workspace\moodle
composer install --dev

Initialise test environment

Launch cmd.exe as normal user and run the following command:

cd C:\server\workspace\moodle
php admin\tool\phpunit\cli\init.php

Execute all tests

Launch cmd.exe as normal user and run the following command:

cd C:\server\workspace\moodle

Useful tools