Today I am announcing the release of a personal project of mine. A GTK+ interface for PHP's built-in web server. It lets you choose the executable, IP address or hostname, port number, root directory, and INI file graphically. I have used this software for testing purposes for many years, since at least 2014.

Why would I need such a thing?

PHP's built-in web server is a CLI feature, as such it requires a specific command to use, one which is easy to forget and gets buried in your terminal's history. While writing a script can help, it too gets buried in your terminal history, or is often located in an inconvenient place, requiring you to browse to the script before you can use it. This basic GTK+ GUI solves these issues. It's as easy to use as any other app on your system.

It's also a great tool for teaching PHP or the fundamentals of how web servers work. It's an easy tool for students to use, for learning programming, in Raspberry Pi projects, robotics, or anything else that requires a web-based interface or centralized server communication. Many of these things are true of PHP's built-in web server itself, this GUI just makes it easier to use for people who are not comfortable using the command line.

Where can I get it?

I have compiled a 64bit binary and a Deb Package for Ubuntu versions 18.04 through 19.10. I invite you to give the software a try, and to report any issues you have. These files will likely work on the versions of Debian these Ubuntu releases were based on, as well as many distributions released around the same time, but they have not been tested on anything other than Ubuntu. Those who are interested in compiling the software from source should visit the software's homepage for more information and a list of its dependencies.

Pre-built Packages

Source Code

Room for Improvement

I have added a Copyright information dialog for release, but other than that, I am releasing it as-is.

One obvious improvement would be to have the interface remember its state when it restarts, so people who don't change the settings very often don't have to keep making the same changes each time they use it. Another would be to standardize the build process, the Makefile and Debian package build process is probably not standard, in a few ways. I am open to contributions that improve compatibility with different distributions.

Another oddity is that most of the source code files are bundled with the binary when it is compiled. I did this because I have given this software to a few people over the years, and I wanted to make sure the source code was clandestinely included in case it was shared with other people. This will likely be removed in the future.

I am also open to suggestions for better names. "PHP Web Server GUI" is not a very catchy or convenient name, so it is likely to change in the future. However, I often choose a name for my software with the full intent to change it to a better name eventually, but never do.