Looking for the latest version? Download wtnmp-portable.zip (63.6 MB)
Name Modified Size Downloads / Week Status
Totals: 5 Items   63.6 MB 54
wt-nmp-14 2014-11-20 365365 weekly downloads
extras 2014-09-01 77 weekly downloads
wt-nmp-13 2013-12-14 11 weekly downloads
wtnmp-portable.zip 2014-11-20 63.6 MB 5252 weekly downloads
README.md 2014-11-20 13.6 kB 22 weekly downloads

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. A lighter alternative to XAMPP and WAMP.

Current Package contains:

  • Nginx web server - 1.7.7
  • Mysql database server - 5.6.21
  • Php scripting language - 5.4.35 & 5.5.19 & 5.6.3
  • 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-NMPconf and all log files are stored in one folder: WT-NMPlog.
  • 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:MyWorkWT-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 minimizes to systray
  • -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 at startup
  • -n --noUpdates Disables weekly Update checks
  • example: D:Workbinwt-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-nmpnginx-1.2.8nginx.exe -c d:wt-nmpconfnginx.conf -p "d:wt-nmpnginx-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.11 | 1.7.7 | 5.6.21 | 5.4.35 & 5.5.19 & 5.6.3 | opcache xdebug xcache composer node.js npm winscp 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 | 1.7.1 | 5.6.19 | 5.4.29 & 5.5.13 | opcache xdebug xcache composer node.js npm winscp wt-nmp-14.05 | 1.7.0 | 5.6.17 | 5.4.28 & 5.5.12 | opcache xdebug xcache wt-nmp-14.03 | 1.5.11 | 5.6.16 | 5.4.25 & 5.5.9 | opcache xdebug xcache wt-nmp-14.01 | 1.5.8 | 5.6.15 | 5.4.24 & 5.5.8 | opcache xdebug xcache wt-nmp-13.12 | 1.5.7 | 5.6.15 | 5.4.23 & 5.5.7 | 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:


  • Clone/Sync WT-NMP to a new machine:
  • If you copy the WT-NMP folder to a new machine, PHP 5 might not start because php-5.5 requires Microsoft Visual C++ Redistributable 2012.
  • Run wt-nmp installer once on the new machine, then overwrite/sync the whole wt-nmp folder with the cloned one.
  • Allow acces from LAN and Internet to your server stack. In /conf/nginx.conf: server { listen *:80 default_server; listen [::1]:80 ipv6only=on; server_name ????????.com; location ~ /.ht { deny all; } location ~ .php$ { try_files $uri =404; include nginx.fastcgi.conf; fastcgi_pass php_farm; } }
  • You can use composer.bat to download and keep updated various PHP frameworks and components. In a command line window, run:
  • composer create-project symfony/framework-standard-edition C:WT-NMPWWWmyNewSymfProject 2.4.*
  • cd c:pathToWWW
  • composer create-project silverstripe/installer myNewSSProject 3.1.*
  • composer create-project laravel/laravel myNewLarProject --prefer-dist
  • You can upload files or synchronize your project to a server using WinSCP:
  • open WT-NMP Server Manager by clicking on the system tray icon
  • select your project and click on "Setup Remote Connection" icon
  • return to the project list and click on "Upload", "Synchronize" or "Browse" icons
  • Installing Extras: Let`s say you want to use nginx 1.2.x instead of the latest version.
  • Kill All servers, Download the extra package
  • Only for Nginx & MySql, delete pathtoWT-NMPbinnginx-x.x.x. For PHP it`s ok to keep multiple versions.
  • Unzip the extra package in pathtoWT-NMP\


  • wt-nmp-14.11 :
  • fixed several server manager issues
  • added HostsFileEditor
  • added the latest versions of Nginx, HeidiSql, PHP

  • wt-nmp-14.10 :

  • fixed show server manager bug
  • added support for php-5.6.x

  • wt-nmp-14.09 :

  • cloned php.ini in php bin directory, for composer
  • added the latest versions of Nginx, MySQL, PHP

  • wt-nmp-14.05 :

  • wt-nmp.exe server manager now runs minimized in the system tray and monitors and restarts crashed servers
  • added the latest versions of Nginx, MySQL, PHP, adminer
  • added Composer.phar, Node.js, NPM, and WinSCP
  • implemented Update Checker and Project List
  • implemented Project Upload, Sync and Browse with WinSCP
  • multiple upgrades and fixes.

  • wt-nmp-14.03 :

  • added the latest versions of Nginx, MySQL, PHP, adminer

  • wt-nmp-14.01 :

  • added the latest versions of Nginx, MySQL, PHP
  • server manager remembers the last php version and number of php processes used
  • better support for multiple development environments on the same OS

  • wt-nmp-13.12 :

  • Start servers with windows checkbox
  • Installer

  • wt-nmp-13.10 :

  • added the latest versions of Nginx, MySQL, PHP
  • added command line option -l --latestPhp
  • changed mysql connection string from 'localhost' to '' to prevent 1 second delay on windows 8

  • wt-nmp-13.09 :

  • added PHP 5.5.3 allongside 5.4.19 and 5.3.27
  • added opcache xdebug Php Extensions
  • in the server manager you can choose from multiple PHP versions
  • added PSPad free text editor

  • wt-nmp-13.07.31 :

  • added the latest versions of Nginx, MySQL, PHP, XCache
  • Xcache is loaded but disabled by default
  • added msmtp (sendmail alternative for windows) and php mail() tester
  • Fixed a few config bugs

  • wt-nmp-13.06.09 :

  • WT-NMP is now truly portable, the wt-nmp.exe server manager updates configuration files automatically after mooving to a new location
  • MySQL data dir is moved from distribution dir mysql-*/data to wt-nmp basedir in order for database data to be persistent during upgrades
  • removed command line option -w --warningsDisabled
  • renamed command line option -p --phpProcesses to -p --phpCgiServers
  • renamed nginx additional config files to nginx.*.conf
  • moved all executables in /bin
  • added a few icons to the server manager
  • added MySQL Database daily backups --backup

  • wt-nmp-13.04.23 :

  • added the latest versions of Nginx, MySQL, PHP
  • wt-nmp.exe now has a debug logBox and close button
  • all configuration files were moved to C:/wt-nmp/conf to allow easy upgrades
  • reg.php has a new look.
Source: README.md, updated 2014-11-20