Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

PHP Web App Boilerplate

A simple PHP web application boilerplate that serves a static HTML page with optional database support.

Features

  • 🚀 Built-in PHP web server
  • 🗄️ Optional MySQL and PostgreSQL database support
  • 📁 Static file serving
  • 🔍 Health check endpoint
  • ⚙️ Environment variable configuration
  • 🎯 Simple routing system

Requirements

  • PHP >= 7.4
  • PDO extension (included by default)
  • PDO MySQL driver (for MySQL support)
  • PDO PostgreSQL driver (for PostgreSQL support)

Quick Start

Running the Application

# Using PHP directly
php -S localhost:8080 -t . index.php
# Or using Composer
composer start

The server will start on port 8080 by default. You can customize the port using the PORT environment variable:

PORT=3000 php index.php

Development Mode

Run the server in development mode:

make dev

This starts the PHP built-in server at http://localhost:8080.

Database Support

The application automatically connects to a database if the DATABASE_URL environment variable is set.

Supported Databases

  • MySQL: mysql://user:password@host:port/database
  • PostgreSQL: postgres://user:password@host:port/database or postgresql://user:password@host:port/database

Example Usage

# MySQL
DATABASE_URL="mysql://root:password@localhost:3306/mydb" php index.php
# PostgreSQL
DATABASE_URL="postgres://user:pass@localhost:5432/mydb" php index.php

The database connection is established on each request and can be checked via the /health endpoint.

API Endpoints

GET /

Serves the main HTML page from web/index.html.

GET /health

Returns a JSON health check response with database connection status.

Response Example:

{
"status": "ok",
"database": {
"type": "MySQL",
"status": "Connected",
"connected": true
}
}

GET /static/*

Serves static files from the web/ directory.

Example: /static/styles.cssweb/styles.css

Project Structure

.
├── index.php # Main application file
├── web/
│ └── index.html # Static HTML page
├── composer.json # Composer configuration
├── Makefile # Build and run commands
└── README.md # This file

Environment Variables

VariableDescriptionDefault
PORTServer port8080
DATABASE_URLDatabase connection string(none)

Deploy configuration

This application is designed to work seamlessly with DollarDeploy, which handles build, deployment, and monitoring automatically.

  • Pre-start command: sudo apt install -y php-fpm php-pgsql php-mysql

Deploying on the command line:

ddc --apiKey $DOLLARDEPLOY_API_KEY --services postgres --url https://github.com/dollardeploy/example-php --app:preStartCmd "sudo apt install php-fpm php-pgsql" --hostId $HOST_ID --app:type php

Security Notes

  • Static files are served only from the web/ directory
  • Path traversal attacks are prevented with realpath() checks
  • Database credentials should be provided via DATABASE_URL environment variable
  • PDO is used with prepared statements for safe database operations

License

MIT

About

PHP minimal example repository

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages