Skip to content

A portable CMSimple_XH distribution for Windows

Notifications You must be signed in to change notification settings


Repository files navigation


Portable_XH is a portable CMSimple_XH distribution for Windows that is meant to run on your local machine without the need to have a webserver with PHP installed. It requires no installation, runs under a guest account and even from an USB storage medium. It doesn't allow access from other computers, particularly from the internet.

Portable_XH is the perfect solution to have a demo of CMSimple_XH at hand, or to portably prepare a website without uploading it to some webspace in the first place.

However, it is not meant to replace a local development environment. If you need this, you should look for XAMPP or any other of the major distributions.


64bit Windows 7 or higher, with the Visual C++ Redistributable for Visual Studio 2015-2019 installed.


Just unzip the download to wherever you like – even to a USB storage medium.

Some functionality of CMSimple_XH and plugins requires to connect to the WWW, for instance the link check. If you want to use these features, you have to configure your firewall to allow outbound connections for Portable_XH\php\php.exe. Usually your firewall will ask for this.


Open Portable_XH(.bat) in the installation's top level folder. This will power up the webserver and open the default browser pointing at the CMSimple_XH installation. If you want to shut down the webserver just close the window. As long as the webserver is running, you can navigate to http://localhost:8080/ to view the start page of the CMSimple_XH installation, which resides in the www/ subfolder.

You can log in via the login link at the bottom of the page. The default password is "test".

How to use CMSimple_XH is described in its Wiki. If you have questions feel free to ask in its Forum.

Multiple CMSimple_XH Installations

You can have multiple CMSimple_XH installations in a single Portable_XH the same way as on any webserver, i.e. in different subfolders of the webroot. If the webroot contains neither an index.php nor an index.html, Portable_XH will display a menu of all immediate subfolders for easy navigation when started.


None of the emails that may be sent by CMSimple_XH or a plugin will actually be sent. Instead all emails are stored in the mails/ folder. If you have an email client installed and configured which can handle external .eml files, you can simply open the .eml files to view them; otherwise you'll want to import them into your software.


As this distribution is an aggregation of different pieces of software, the folders contain independent software which is licensed separately as such.


The distributed PHP build only contains a subset of the extensions that are contained in the official PHP builds, because several extensions are most likely never needed for CMSimple_XH websites, and too keep the download size small. If you need other extensions, download a binary distribution (Zip) from, and put it in the php/ folder of Portable_XH. You may have to enable additional extensions in php/php.ini. Note that it doesn't matter which PHP version download, but for best compatibility VC15 or VS16 x64 Non Thread Safe variants are recommended. Also overwrite php/ext/php_portable_xh_helper.dll with a copy of the DLL for the chosen PHP version.

PHP's built-in webserver, which is used by Portable_XH, is single-threaded. Thus it can't handle nested requests, and such requests will block. In CMSimple_XH currently the only such case is the check whether certain files can't be accessed directly via HTTP. Since this check is unnecessary for Portable_XH, this particular functionality is overriden (outside of the www/ directory), so no blocking will happen. However, some plugins may also utilize nested requests, i.e. they may block resulting in a timeout error.

Due to a bug in PHP's built-in webserver folders with dots in the name are regarded as files, so subfolders of www/ must not contain dots.

Some browsers (e.g. Opera 12.16) may not be able to navigate to http://localhost:8080/ for whatever reasons. You most likely can get around this issue by navigating to http://[::1]:8080/ or manually.


The application icon is designed by Teekatas S. aka. Raindropmemory. Many thanks for making this icon freely available.