QuickPHP Lightweight Standalone Bloat-free Portable (USB stick / CD drive / Windows Embedded / Kiosks) PHP Web Server

The Problem - Testing PHP Scripts Without IIS / Apache

Recently, I was trying to very quickly hack up a website (this website actually) using PHP but was reluctant to install IIS or Apache. All I wanted to do was to quickly test and debug any scripting errors. Since I'm not hosting this site locally, I don't want to turn my PC into a web server.

Microsoft Visual Studio comes with a development web server for ASP.NET. While it is quite buggy, it's just the right tool for developing web pages. Looking around, I found a few miserable attempt at some thing similar, but most of them do not even parse the URI for GET params, let alone handling POST requests.

I quickly determined the following requirements:
  • Can be tested with any browsers (therefore, must be a web server)
  • Must not use .NET framework - PHP developers don't necessary care about .NET
  • Small size and no installation - so I could grab it here and use it on any computer (hence, no .NET again)
  • Must be able to handle GET, POST and HEAD requests
  • Must not rely on PHP to be installed
  • Supports PHP extensions and PHP.ini (most scripts require them)
This is the result.

Weighing in at just over 500KB in size and using around 9MB of memory with PHP DLL running, QuickPHP is one of the most lightweight fully functional standalone PHP web server in the world today!

The Solution - Meet QuickPHP

The PHP Development Web Server for Testing and Debugging your PHP Scripts.

QuickPHP - PHP Tester and Debugger (Lightweight PHP Web Server) Main Screen

Features:
  • Free for non-commercial use
  • A PHP development web server
  • The PHP version of Microsoft Visual Studio's ASP.NET Development Server
  • Extremely lightweight in both disk space (file size) and memory footprint
  • An empty WinForms .NET application uses more memory than this web server!
  • Ideal for quickly testing your PHP scripts locally
  • Without the hassle of converting your machine into a web server
  • Runs as a standalone application
  • Serves HTML and PHP files
  • Can be tested with any browsers
  • Small size and no installation - so you could grab it here and use it on any computer
  • Handles GET, POST and HEAD requests
  • Supports PHP Sessions and Cookies
  • Does not rely on PHP to be installed
  • Supports PHP extensions and PHP.ini (most scripts require them)
  • Extensions such as MySQL, MSSQL, SQLite, Firebird, Zip, Sockets etc.
  • Supports command line arguments
  • Supports request mods ( la Apache modules such as mod_rewrite, mod_headers etc.) using PHP scripts
  • Tested with PHPBB3 - from installation to a fully running forum
  • Purely Win32 application - does NOT require .NET framework
  • No installation required!
  • Simply unzip into a random folder and run!
  • Users have run it in kiosks, Windows Embedded platforms, carry around in USB sticks for presentation etc.
  • Especially useful in user accounts with restrictive access!


Download QuickPHP

Latest Version: 1.15.0 (Updated on 24 March 2014)

Requirements:
  • Windows XP / Vista / 7 / 8
  • Internet Browser - to test your web pages


Download QuickPHP Version 1.15.0 here:

download    quickphp_webserver.zip    3.16MB




QuickPHP Executable with PHP v5.3.8.0 DLL (Standalone to run PHP scripts without extensions). QuickPHP is compatible with all PHP v5.3.x, so feel free to update the DLL.


PHP Extensions: For a complete set of PHP extensions such as MySQL, download the official PHP release (make sure you get the extensions off the same version as your php5ts.dll) and head to the forums to read up on how to set it up.


download    quickphp_webserver_bare.zip    535.32kB




Advanced. QuickPHP Executable only - Download this bare executable if you already have PHP installed, or intend to download the PHP distribution from the official PHP website. You'll need to unzip the QuickPHP Executable into your PHP installation folder (usually C:\PHP). QuickPHP v1.12.0 and above only works with PHP 5.3.x.


Installation

Simply unzip to a folder and run the application.

*** NOTE *** If you have a Windows Firewall running, running QuickPHP for the first time will cause Windows to prompt you for approval. You DO NOT have to unblock QuickPHP if you are debugging your scripts locally (e.g. 127.0.0.1). In fact, it is recommended for higher security that you DO NOT UNBLOCK QuickPHP.

Reason: As QuickPHP is meant for PHP development purposes and not for web hosting, it runs with your credentials - if you are logged on as Administrator, then QuickPHP will also run as Administrator.

For support, visit the QuickPHP Forum.

QuickPHP has been tested with various versions of PHP5, but has not been tested on PHP4. However, it should work just fine.

This application has the following restrictions (by downloading / using, you agree to the following terms and conditions):
  • Not to be redistributed
  • Free version is not to be used for commercial purposes (including developing commercial websites)
  • If you wish to use it for commercial purposes, some fees will apply
  • Other standard software EULAs such as this.

QuickPHP for Commercial Use

If you are looking to use QuickPHP for commercial purposes (e.g. redistributing QuickPHP as part of your commercial solution / product, using QuickPHP to develop a commercial website), please obtain a license here. It helps to keep QuickPHP development going and also with the upkeep of this website.

QuickPHP Mod Documentation

QuickPHP calls QuickPHP_ReqMod.php (in the same folder as QuickPHP.exe) to alter the HTTP request from the client. Read the full QuickPHP Mod Documentation here. If you need help, please post in the forum.

Change History

Version 1.15.0
  • Fixed '' is not a valid floating point value issue when DebugLog variable is not defined in ReqMod script.
  • DebugLog now defaults to true so all script syntax errors and warnings is saved to a log file by default.
Version 1.14.0
  • Supports relative path for Document Root Path (useful for carrying around your website and QuickPHP in a USB stick).
Version 1.13.0
  • Added workaround for PHP 5.3.x incorrect 80x87 Floating Point Code Word bug.
  • Updated PHP DLL version to 5.3.8.0
Version 1.12.2
  • Added checks to make sure associated PHP DLL version is compatible.
  • Tweaked $_SERVER vars to make it more similar to Apache server's values.
Version 1.12.1
  • Updated PHP DLL version to 5.3.6.0
Version 1.12.0
  • Upgraded QuickPHP to support PHP 5.3.x -- as a result, PHP 5.2.x is no longer supported!
  • Bug fixes:
  • QuickPHP preventing Windows from logging out / shutting down.
  • Bad $_SERVER vars for ORIG_PATH_INFO and PATH_INFO.
Version 1.11.0
  • Added Feature:
  • Option to allow / disallow directory listing.
Version 1.10.1
  • Patched known vulnerabilities:
  • SecurityFocus/BID/45603 - A directory traversal vulnerability can be exploited to read files outside of the webroot directory.
  • SecurityFocus/BID/45626 - QuickPHP is prone to a remote source-code-disclosure vulnerability because it fails to properly sanitize user-supplied input. An attacker can exploit this vulnerability to view the source code of files in the context of the server process; this may aid in further attacks.
Version 1.10.0
  • Added Features:
  • mod superglobal $DebugLogFileName. Logs will be saved to this file after mods have run.
  • mod superglobals $_QUICKPHP_SCRATCHPAD_<x>, where <x> == 0 to 99. These scratch pads are also accessible from your actual script, so they can be used to pass values from mods.
  • App settings moved from registry to ini file.
  • Various minor fixes to improve compatibility.
Version 1.9.1
  • Minor changes to server signature on reply. QuickPHP now replies with mod signatures along with its own.
Version 1.9.0
  • Added Feature:
  • Multiple default docs (separated by semicolon) - e.g. index.php;index.html.
  • Fixed:
  • Default doc invocation behavior has been changed - e.g. 'http://127.0.0.1:5723/my_folder' will no longer invoke the default doc in my_folder. Instead, it will list the contents of the folder. To invoke the default doc, specify 'http://127.0.0.1:5723/my_folder/'.
Version 1.8.0
  • Added Feature:
  • Additional webserver header when replying client via request mod ($ExtraReplyHeaders superglobal).
  • Fixed:
  • Reply date missing and incorrect last modified timestamp (time was local time but specified as GMT).
Version 1.7.0
  • Added Feature:
  • PHP $_FILES support (for enctype="multipart/form-data" file upload support).
Version 1.6.0
  • Added Feature:
  • Request mod debug logs are now appended to QuickPHP_ReqMod_DebugLog.txt file.
Version 1.5.0
  • Added Features:
  • Run without tray icon.
  • Ability to specify server binding address to limit webserver's listen on specific address only (e.g. limit to one NIC / local traffic).
Version 1.4.0 Version 1.3.0
  • Added Features:
  • Support for standard web server superglobals $_SERVER[x] (where x could be DOCUMENT_ROOT, HTTP_ACCEPT, HTTP_CACHE_CONTROL, HTTP_COOKIE etc.).
  • An option to suppress confirmations (e.g. silent exit).
Version 1.2.0
  • Added Features:
  • Command line support.
  • PHP file not found now gets the server to respond with proper 404 (as oppose to soft 404 before).
Version 1.1.0
  • Added Feature: QuickPHP now supports PHP Sessions and Cookies.
Version 1.0.1
  • Fixed Bug: Saved settings are loaded to the visual controls but do not take effect when server is started.
Version 1.0.0
  • Pilot Release