jmrashed / php-installer
Reusable, framework-agnostic web installer for PHP applications — step-by-step installation wizard with multi-database support, migrations, and admin creation.
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/jmrashed/php-installer
Requires
- php: >=8.1
- ext-curl: *
- ext-mbstring: *
- ext-pdo: *
Suggests
- ext-pdo_mysql: For MySQL database support
- ext-pdo_pgsql: For PostgreSQL database support
- ext-pdo_sqlite: For SQLite database support
- ext-zip: For ZIP file extraction during database import
This package is auto-updated.
Last update: 2025-10-14 11:10:47 UTC
README
A professional, reusable web installer for any PHP application. Simplify your deployment process with an intuitive step-by-step installation wizard.
✨ Features
- System Requirements Check - Validates PHP version, extensions, and directory permissions
- Database Setup - Automated database creation and schema import
- Configuration Management - Generates
.env
and config files from templates - Admin Account Creation - Optional administrator user setup
- Installation Lock - Prevents reinstallation after completion
- CSRF Protection - Secure form handling
- Responsive UI - Bootstrap-powered interface
- Error Handling - Comprehensive validation and user feedback
🚀 Quick Start
Installation
# Clone the repository git clone git@github.com:jmrashed/php-installer.git # Or download and extract to your project wget https://github.com/jmrashed/php-installer/archive/main.zip
Integration
- Copy the
php-installer
folder to your project root - Create your database schema file at
database/db.sql
- Configure installer settings in
config/installer.php
- Access via browser:
http://yourdomain.com/php-installer/
📋 Requirements
- PHP 7.4 or higher
- PDO extension
- MySQL/MariaDB database
- Web server (Apache/Nginx)
🛠️ Configuration
Screenshot
Basic Setup
Edit config/installer.php
:
<?php return [ 'app_name' => 'Your Application', 'version' => '1.0.0', 'php_version' => '7.4', 'required_extensions' => ['pdo_mysql', 'curl', 'mbstring'], 'writable_dirs' => ['config', 'storage', 'uploads'], 'database_file' => __DIR__ . '/../database/db.sql' ];
Database Schema
Place your SQL schema in database/db.sql
:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, password VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
📁 Directory Structure
php-installer/
├── config/
│ └── installer.php # Configuration settings
├── database/
│ └── db.sql # Database schema
├── public/
│ └── index.php # Entry point
├── src/
│ ├── Core/ # Core installer classes
│ ├── Controllers/ # Request handlers
│ ├── Views/ # UI templates
│ ├── Assets/ # CSS, JS, images
│ └── Templates/ # Config templates
└── storage/
├── logs/ # Installation logs
└── installer.lock # Installation lock file
🎯 Usage Example
For Laravel Projects
// config/installer.php return [ 'app_name' => 'Laravel Application', 'required_extensions' => ['pdo_mysql', 'mbstring', 'openssl', 'tokenizer'], 'writable_dirs' => ['storage', 'bootstrap/cache'], ];
For Custom PHP Projects
// config/installer.php return [ 'app_name' => 'Custom PHP App', 'required_extensions' => ['pdo_mysql', 'curl', 'gd'], 'writable_dirs' => ['uploads', 'cache', 'logs'], ];
🔧 Customization
Custom Installation Steps
Extend the installer by modifying src/Core/Installer.php
:
private $steps = [ 'welcome', 'license', 'system_check', 'db_config', 'db_import', 'app_config', 'admin_account', 'custom_step', // Add your custom step 'finish' ];
Custom Templates
Create custom config templates in src/Templates/
:
config_template.php
- Application configurationenv_template.php
- Environment variables
📋 Changelog
See CHANGELOG.md for a detailed list of changes and version history.
🤝 Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
👨💻 Author
Md Rasheduzzaman
Full-Stack Engineer & Technical Project Manager
- Email: jmrashed@gmail.com
- GitHub: @jmrashed
- LinkedIn: Md Rasheduzzaman
🙏 Acknowledgments
- Bootstrap for the responsive UI framework
- PHP community for best practices and standards
📊 Stats
⭐ Star this repository if it helped you!