How do I install WPN-XM?

You find the installation guide in the user-manual.

Does WPN-XM include MySQL or MariaDB?

WPN-XM ships MariaDB since the beginning of the project.

MariaDB is a drop-in replacement for MySQL. The commands and tools are the same for both. Although there are subtle differences regarding features and compatibility.

How do I start and stop WPN-XM?

  • You can use the "Server Control Panel". It is started with:


You find more information about using the SCP in the user-manual.

  • You can also use batchfiles to start or stop servers.

How can I install a server as a service?

Services are not supported, yet. See Issue #165.

Is WPN-XM production ready?

WPN-XM is production ready for a local development purposes. It allows developers to start new projects fastly.

It is in active development and beta quality software (as indicated by the major version number "0").

Do not use WPN-XM as a public server! WPN-XM is not prepared to be a publicly available server.

Being a publicly available server is not the intended production use-case.

WPN-XM has no secure configuration! WPN-XM is not configured in a secure way.

We are keeping security barriers low to allow a fast development, e.g. by using either no passwords or the same password for multiple administration tools.

Please secure WPN-XM, if you want to make it accessible via the network to people outside your LAN. This is a huge security risk! A firewall or an external router will only provide a low level of security.

We are looking for contributions to our security checklist. This list should act as a starting point, for a developer trying to secure the server environment. It’s by no means complete. You have to fix all security issues manually.

Security Checklist

  • delete the webinterface (www\tools\webinterface)

  • remove or access protect all other tools, e.g. www\tools\adminer, www\tools\phpmyadmin

  • add password protections to the servers

  • configure your firewall to open only for protocols and ports of servers you really need

  • move the public folder to a new and empty partition, adjust paths in nginx.conf

  • use a dedicated user with restricted permissions to run the server environment

How do I uninstall WPN-XM?

Please use the Uninstaller in the root folder.

What are the "Lite" and "LiteRC" versions of WPN-XM?

WPN-XM Lite and LiteRC are our smallest packaged installers. Lite means "light-weight".

The Lite installers provide only a few essential software components to get quickly started, including Nginx, PHP, MariaDB, Xdebug, Composer.

Of course, some servers and tools provided in the Standard or Full packages will be missing.

I have trouble starting and stopping daemons using the Server-Control-Panel. What can i do?

If the SCP doesn’t work, then please try to use the batch files start-wpnxm.bat and stop-wpnxm.bat instead. You might check, whether daemons are running with status-wpnxm.bat.

Where should I place my web content?

The main folder for your projects is \www.

Please create a new folder for your project. For example:

  • let’s create a folder "myproject", so you get \www\myproject

  • and put a simple HTML file test.html with the following content in this directory:

   echo 'Hello World! This is my project.';

You can access it by using the URI http://localhost/myproject/test.html.

Can I move the WPN-XM installation?

No, that’s not supported, yet.

What are "automatic start pages" for the "\www" directory and it’s subfolders?

Nginx is configured to serve the following files as index pages: index.php, index.html, index.htm.

This is done by using Nginx’s index directive inside a location block:

location / {
    index  index.php index.html index.htm;

The server will automatically try to serve one of these files, when you access a folder without specifying a file in the URI. Files are checked in the specified order.

When those files are not found, the server will display the directory listing (autoindex).

Where can I change the configuration?

My anti-virus software reports that WPN-XM contains a virus!?

It’s possible that an antivirus software erroneously identifies a file as containing a virus or being malware, when the file is clean. That happens, because Antivirus programs often use heuristics to identify malware and viruses. Sometimes these heuristics fail and the program reports a false positive.

We transmit false positives as samples to several online anti-virus labs for further analysis. You can also use the online tool Virus Total for scanning files of WPN-XM.

What can i do, when the MySQL/MariaDB daemon won’t start?

Please start mysqld manually by running mysqld --console on the CLI in the folder \server\mariadb\bin. You will get a startup log with more pieces of information about the reason.

cd server\bin\mariadb\bin
mysqld --console

Often the cause is a misconfiguration in my.ini or accidentally modified or deleted files in the data folder.

Why do i get socket errors, while step debugging with XDebug?

Check the Nginx error.log. If you see errormessages like upstream timed out, then try to increase the fastcgi_read_timeout in your nginx.conf. Do not forget to restart the daemon. The value defaults to 60s. Which might be enough for production, but clearly not for development/debugging, because of the long running fastcgi process that does not produce any output until it is finished. See the related Nginx Wiki page: Nginx - Module - HttpFastcgi.

What can i do, when Nginx wont' start or shuts down immediately and Port 80 is used.

Immediate shutdowns are an indicator that the port 80, which Nginx uses by default is already taken. You will also find the following message in the Nginx error.log: bind() to failed.

For a successful bind to port 80, we need to figure out which other application or service is using it, then stop and disable it.

How to check if port 80 is used? How to find out who is using it?

Please check, if the port is used and get the application name listening by using netstat -abno.

You might combine it with findstr to reduce the output of netstat:

netstat -abno | findstr
netstat -abno | findstr

You could also use a helper tool, like CurrPorts or Process Explorer to list the ports and find out the application name.

Which applications and services are known to be listening on port 80?

Another web-server is already listening

An installation of WPN-XM might clash with any other WAMP stack, e.g. XAMPP. Additional steps are needed to make them run in parallel.

Make sure, that no other webserver, e.g. Apache, Tomcat, IIS or WebMatrix is currently listening or configure the stacks to use different ports.

IIS can be removed by turning it off using Windows Features. On a Windows Server via Role and Components Removal.


Skype bind to ports 80 and 443.

To change that, you have to stop Skype and then use it’s configuration dialog:

Please go to Tools > Options > Advanced > Connection and

Uncheck Use Port 80 and 443 for incoming connections.

Windows System Services

Some Windows Systems Services are known to be listening on port 80.

You might, or might not, have some of these Services installed and running.

You have the following ways to stop and disable them:

  1. To open Windows Services, run services.msc to open the Services Manager. You will be able to start, stop, disable and delay Windows Services.

  2. Alternativly, you can use the CLI util sc.exe (sc stop <name>) to start, stop and configure services.

  3. There is also the CLI util net (net stopservice <name>).

World Wide Web Publishing Service (W3SVC)

If the port is used by "System PID 4", then the service "WWW-Publishingservice" (w3svc) is using the port.

sc stop W3SVC
sc config "W3SVC" start=disabled

Web Deployment Agent Service (MsDepSvc)

sc stop MsDepSvc
sc config "MsDepSvc" start=disabled

SQL Server Reporting Services (ReportServer)

sc stop ReportServer
sc config "ReportServer" start=disabled

BranchCache (PeerDistSvc)

sc stop PeerDistSvc
sc config "PeerDistSvc" start=disabled

Sync Share Service (SyncShareSvc)

Microsoft added a feature called Work Folders to Windows Server 2012 R2 and Windows 8+. This feature uses the ports 80 and 443 by default and relies on the service SyncShareSvc to synchronizes files and folders between different machines.

sc stop SyncShareSvc
sc config "SyncShareSvc" start=disabled

If you need the Work Folders feature, you might also change it’s ports, e.g. to 10080 and 10443 by editing the SyncShareSvc.config (C:\Windows\System32\SyncShareSvc.config) file. After doing that, you need to register the new ports using the admin prompt:

Netsh http add urlacl url=http://*:<10080>/ user="NT Authority\LOCAL SERVICE"
Netsh http add urlacl url=https://*:<10443>/ user="NT Authority\LOCAL SERVICE"

Internet Information Server (WAS, IISADMIN)

You can stop the IIS Admin Service and all dependent services, with net stop iisasmin /y at the CLI.

Alternatively, you can stop and disable services individually:

sc stop WAS
sc config "WAS" start=disabled
sc stop IISADMIN
sc config "IISADMIN" start=disabled


If installed, TeamViewer binds to port 80.

Please use it’s configuration dialog and go to Extras > Options > Advanced and enable the option Don’t use incoming port 80.

How to start the installation wizard in the shared folder of a VM?

ShellExecuteEx Error - System cannot find the path specified.

The installer can not be executed in the shared folder of a virtual machine. It needs to be copied into a non-shared folder and started there.

How to test, if mails are send on Windows?

You would install a fake sendmail server, which listens at a specific port (usally 25) for new mail and saves it to a specific folder. You can then read the file and test it for correct mail rendering.

The are several fake sendmail tools (1-5) and servers (5-6) around :

WPN-XM ships "Fake Sendmail".

If you need a real SMTP tool, try or

Why is there a "reversed" N in WPИ-XM?

The "reversed" N is cyrillic and used intentionally to indicate that the stack includes Nginx ("engine x"). We use the "reversed" N as the initial letter for Nginx in our project name and logo.

Other logos apply the same "graphical hint" and reverse the second N:

Nginx Logo