Installation:
composer require erag/installererag
Ensure PHP 8.0+ is installed (package enforces this via composer.json constraints).
Register Provider:
/bootstrap/providers.php:
InstallerErag\InstallerServiceProvider::class
config/app.php under providers.Publish Assets:
php artisan vendor:publish --tag=InstallerErag --force
This copies:
resources/views/vendor/installererag/*)config/installererag.php)First Use Case:
Trigger the installer via a route (default: /install-app). The package auto-generates a route if none exists in routes/web.php:
Route::installer(); // Shorthand provided by the package
Pre-Installation Checks:
pdo_mysql), and disk permissions.config/installererag.php:
'php_requirements' => [
'version' => '8.0.0',
'extensions' => ['pdo', 'mbstring', 'fileinfo'],
],
Dynamic .env Setup:
InstallerErag\Installer::generateEnv() method to create a default .env with placeholders:
use InstallerErag\Installer;
$envContent = Installer::generateEnv();
file_put_contents('.env', $envContent);
config/installererag.php:
'env_defaults' => [
'APP_URL' => 'https://yourdomain.com',
'DB_DATABASE' => 'laravel_installer',
],
Database Migrations & Seeding:
use InstallerErag\Installer;
Installer::runMigrations(); // Runs `php artisan migrate`
Installer::seedDatabase(); // Runs `php artisan db:seed`
config/installererag.php:
'seeders' => [
'users' => \Database\Seeders\UserSeeder::class,
],
Custom Account Form:
resources/views/vendor/installererag/auth/register.blade.php.InstallerErag\Events\AdminCreated event:
event(new AdminCreated($user));
Post-Installation Redirects:
config/installererag.php:
'post_install_redirect' => '/admin/dashboard',
'post_install_message' => 'Installation complete! Redirecting...',
web or custom):
Route::installer()->middleware(['web', 'installer']); // Add to routes/web.php
resources/lang/vendor/installererag.public/vendor/installererag/css/installer.css.Installer facade to trigger steps programmatically:
Installer::checkRequirements(); // Returns array of validation results
Permission Issues:
755 for storage/bootstrap/cache. Override in config/installererag.php:
'folder_permissions' => [
'storage' => 0775,
'bootstrap/cache' => 0775,
],
Installer::checkPermissions() to log missing permissions.Environment File Conflicts:
.env exists, the package skips generation by default. Force overwrite in config:
'env_force_generate' => true,
.env files.Route Collisions:
/install-app route may conflict with existing routes. Rename it in config/installererag.php:
'route_name' => 'custom-install',
'route_path' => 'setup-app',
Database Seeders:
DatabaseSeeder.php if using custom seeders.PHP Extensions:
README:
'php_requirements' => [
'extensions' => [
'pdo_mysql' => 'MySQL support',
'gd' => 'Image processing (optional)',
],
],
Log Output: Enable debug mode in config/installererag.php:
'debug' => env('APP_DEBUG', false),
Logs appear in storage/logs/laravel.log.
Manual Validation:
$requirements = Installer::checkRequirements();
dd($requirements); // Inspect validation results
Event Listeners:
Listen for InstallerErag\Events\InstallationStarted/InstallationCompleted to log custom steps:
Event::listen(InstallationStarted::class, function () {
Log::info('Installer started at ' . now());
});
Custom Steps:
public function boot()
{
Installer::addPreInstallStep(function () {
// Custom logic (e.g., API key setup)
});
}
Dynamic Config:
config(['installererag.env_defaults.APP_NAME' => 'MyApp']);
API Mode:
Installer facade for CLI-based installs:
if (app()->runningInConsole()) {
Installer::runFullInstall();
}
Multi-Tenant Setup:
.env files by overriding generateEnv():
Installer::extend(function ($installer) {
$installer->envGenerator = function () {
return str_replace('DB_DATABASE=laravel', 'DB_DATABASE=tenant_'.request('tenant'), $installer->defaultEnv);
};
});
Docker Integration: Use the package to validate container environments:
RUN composer require erag/installererag && \
php artisan installer:check-requirements
CI/CD Pipelines: Automate installs in GitHub Actions:
- name: Run Installer
run: php artisan installer:run --env=testing
Local Development:
Skip migrations/seeding in local .env:
INSTALLER_SKIP_MIGRATIONS=true
How can I help you explore Laravel packages today?