WT-NMP - portable Nginx Mysql Php development stack for Windows

A portable, preconfigured, lightweight, fast and stable server stack for developing php mysql applications on windows, based on the excellent webserver Nginx. Just unzip and start developing!

Current Package contains:

  • Nginx web server - 1.7.6
  • Mysql database server - 5.6.21
  • Php scripting language - 5.4.34 & 5.5.18 & 5.6.2
  • Node.js server-side JavaScript engine
  • HeidiSql.exe mysql database manager
  • WinSCP SFTP client
  • Php Extensions: opcache, xdebug, xcache.
  • MSmtp sendmail smtp client wrapper
  • Composer.phar dependency manager for php
  • Adminer.php web based mysql database manager
  • Reg.php regular expressions tester for both PHP and JavaScript
  • wt-nmp.exe server manager


  • TRULY PORTABLE, you can zip it and take it with you, or you can move it to a different location on your filesystem. Configuration files are updated automatically after you move WT-NMP to a different machine/folder.
  • Easy to upgrade: Download / Unzip / Overwrite!. Backups, configuration files, database data, included libraries and projects are persistent during upgrades (not overwritten).
  • Lightning-fast web server. Optimized for best performance. Preconfigured servers for fast development.
  • Command line tools: mysql client, php console, node consloe, composer , npm,
  • For easy access, all configuration files are stored in one place: WT-NMP\conf and all log files are stored in one folder: WT-NMP\log.
  • Multiple PHP Versions and version switcher. Dynamic number of php-cgi processes.
  • The server manager runs minimized in the system tray and monitors, logs and restarts crashed servers.
  • Easy project Upload, Sync and Browse with WinSCP
  • Optional MySQL database daily backups can be enabled with --backup. Up to 7 backup files will be created per database per weekday.
  • Ideal solution for multiple development environments or parallel configurations on a desktop computer. You can have any number of WT-NMP clones on your computer, all pointing to a single projects directory.



  • Download the latest installer. The instaler produces a portable folder.
  • The installer also upgrades previous ZIP instalations as long as you choose the same destination path.


  • WT-NMP is portable, but the installer must be run once on each new machine..
  • The installer registers php, mysql, composer and node executables to PATH. If you move WT-NMP somwhere else on your filesystem, or to a new machine, those executables won`t be available globablly anymore.
  • So, if you need to copy/clone WT-NMP to a new machine, you need to run the installer once, then overwrite the folder with the cloned folder, even if the new location is different than the old location.
  • If you need to clone again, just copy / overwrite the files. The installer needs to be run only the first time, on each machine.
  • For example, sync-ing your work from C:\MyWork\WT-NMP on Machine1 to D:\WT-NMP on Machine2 shold be done by running the installer once on Macine2 (and choosing D:\WT-NMP as destination) then overwriting D:\WT-NMP each time you need to sync your work.

Command line arguments:

  • -d --debug Display debug messages
  • -s --startServers Starts all the servers in background and exits
  • -k --killAll Kills all running servers and exits
  • -b --backup Enables automatic daily backups
  • -l --latestPhp Forces the use of the latest PHP version
  • -p=n --phpCgiServers=n Forces the number of PHP-CGI Servers, between 1 and 9
  • -j --hideProjects Hides Projects list
  • -n --noUpdates Disables weekly Update checks
  • example: D:\Work\bin\wt-nmp.exe --debug --backup --phpCgiServers=2


  • Nginx: One of the reasons Nginx is so fast, it`s because it does not process .htaccess files. Therefore URL Rewriting and User Access must be set in nginx.conf.
  • MySql slow connection on windows 8: changing mysql_connect('localhost','root','') -> mysql_connect('','root','') solves the problem.
  • MySql 5.6 has a bug causing it to use too much memory: add table_definition_cache = 400 to mysql.ini
  • PHP is configured in a very restrictive way, like on most hosting providers. Comment out disable_functions, disable_classes, open_basedir in conf/php.ini, if you need a more permissive PHP configuration.
  • PHP Extensions: most of them are disabled by default, enable them in conf/php.ini (see bin/php-5.x.x/php.ini for opcache, xdebug, xcache)
  • PHP MySql extension is disabled by default and is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. If you really want to enable mysql extension, add or uncomment in conf/php.ini: extension = php_mysql.dll
  • PHP: Starting only one PHP-CGI server with wt-nmp.exe --phpCgiServers=1 will result in slow ajax requests since Nginx will not be able to process PHP scripts simultaneous.
  • XCache PHP Extension: Disabled by default. Due to the limitations of php under windows, (only one process per CGI server, forcing wt-nmp to start more php-cgi servers instead of starting one server with more processes), the XCache PHP Extension will use different shared memory buffers for each php-cgi server. This will use more memory and will make XCache Variable Cache inconsistent between php processes. If you intend relay on it, you should use --phpCgiServers=1. XCache Opcode Cache will not be affected, but it will waste memory.
  • OPCache PHP Extension: when enabled, only one php-cgi server can be safely started. Starting more PHP-CGI servers might return "Fatal Error Unable to reattach to base address"

Debuging Configuration Files:

  • After changing the configuration files, one server might refuse start. In order to find out the reason, you can follow this steps:
  • Kill all servers and restart wt-nmp.exe --debug ( Display debug messages )
  • Copy from the debug logBox the full command, with arguments, used to start that server, under "Start XXX SERVER: "; For example, Start Nginx SERVER: d:\wt-nmp\nginx-1.2.8\nginx.exe -c d:\wt-nmp\conf\nginx.conf -p "d:\wt-nmp\nginx-1.2.8"
  • Open a Windows command line terminal with Start > Run > cmd , Paste the command and observe the output.
  • Also check the server log in WT-NMP/log
  • If nothing works, delete that configuraton file, or the whole WT-NMP/conf directory, kill all servers and restart wt-nmp.exe. The wt-nmp.exe server manager will copy the default configuration files to WT-NMP/conf.
Release History Nginx MySQL PHP Others
wt-nmp-14.10 1.7.6 5.6.21 5.4.34 & 5.5.18 & 5.6.2 opcache xdebug xcache composer node.js npm winscp
wt-nmp-14.09 1.7.4 5.6.20 5.4.32 & 5.5.16 opcache xdebug xcache composer node.js npm winscp
wt-nmp-14.06 Installer 1.7.1 5.6.19 5.4.29 & 5.5.13 opcache xdebug xcache composer node.js npm winscp
wt-nmp-14.06 Zip 1.7.1 5.6.19 5.4.29 opcache xdebug xcache composer node.js npm winscp
wt-nmp-14.05 Installer 1.7.0 5.6.17 5.4.28 & 5.5.12 opcache xdebug xcache
wt-nmp-14.05 Zip 1.7.0 5.6.17 5.4.28 opcache xdebug xcache
wt-nmp-14.03 Installer 1.5.11 5.6.16 5.4.25 & 5.5.9 opcache xdebug xcache
wt-nmp-14.03 Zip 1.5.11 5.6.16 5.4.25 opcache xdebug xcache
wt-nmp-14.01 Installer 1.5.8 5.6.15 5.4.24 & 5.5.8 opcache xdebug xcache
wt-nmp-14.01 Zip 1.5.8 5.6.15 5.4.24 opcache xdebug xcache
wt-nmp-13.12 Installer 1.5.7 5.6.15 5.4.23 & 5.5.7 opcache xdebug xcache
wt-nmp-13.12 Zip 1.5.7 5.6.15 5.4.23 opcache xdebug xcache
wt-nmp-13.10 1.4.3 5.6.14 5.4.21 & 5.5.5 opcache xdebug xcache
wt-nmp-13.09 1.4.2 5.6.13 5.3.27 & 5.4.19 & 5.5.3 opcache xdebug xcache
wt-nmp-13.07.31 1.4.2 5.6.13 5.4.17 xcache
wt-nmp-13.06.09 1.4.1 5.6.12 5.4.16 xcache

Great Articles: