'E-commerce API', 'app_version' => '1.0.0', 'app_url' => 'http://localhost', 'app_env' => 'development', 'debug' => true, 'timezone' => 'Asia/Bangkok', // API Configuration - Dynamic paths 'api_base_path' => $basePath.'/api', 'admin_base_path' => $basePath.'/admin', 'api_version' => 'v1', // Deployment Configuration 'deployment_type' => 'subfolder', 'base_domain' => $_SERVER['HTTP_HOST'] ?? 'localhost', 'subdomain_prefix' => 'api', 'subfolder_path' => $basePath, // Security Settings 'jwt_secret' => 'your-secret-key-change-this-in-production', 'jwt_algorithm' => 'HS256', 'jwt_expiry' => 3600, // 1 hour 'jwt_refresh_expiry' => 86400, // 24 hours // Database Configuration 'database' => [ 'host' => $_ENV['DB_HOST'] ?? 'localhost', 'port' => $_ENV['DB_PORT'] ?? '3306', 'database' => $_ENV['DB_NAME'] ?? 'ecommerce_store', 'username' => $_ENV['DB_USER'] ?? 'root', 'password' => $_ENV['DB_PASS'] ?? '', 'charset' => $_ENV['DB_CHARSET'] ?? 'utf8mb4', 'collation' => $_ENV['DB_COLLATION'] ?? 'utf8mb4_unicode_ci', 'prefix' => $_ENV['DB_PREFIX'] ?? '' ], // Email Configuration 'mail' => [ 'driver' => $_ENV['MAIL_DRIVER'] ?? 'smtp', 'host' => $_ENV['MAIL_HOST'] ?? 'localhost', 'port' => $_ENV['MAIL_PORT'] ?? 587, 'username' => $_ENV['MAIL_USERNAME'] ?? '', 'password' => $_ENV['MAIL_PASSWORD'] ?? '', 'encryption' => $_ENV['MAIL_ENCRYPTION'] ?? 'tls', 'from_address' => $_ENV['MAIL_FROM_ADDRESS'] ?? 'noreply@localhost', 'from_name' => $_ENV['MAIL_FROM_NAME'] ?? 'E-commerce Store' ], // File Storage Configuration 'storage' => [ 'uploads_path' => __DIR__.'/../storage/uploads', 'cache_path' => __DIR__.'/../storage/cache', 'logs_path' => __DIR__.'/../storage/logs', 'temp_path' => __DIR__.'/../storage/temp', 'max_file_size' => 10 * 1024 * 1024, // 10MB 'allowed_image_types' => ['jpg', 'jpeg', 'png', 'gif', 'webp'], 'allowed_file_types' => ['pdf', 'doc', 'docx', 'txt'] ], // Cache Configuration 'cache' => [ 'default' => $_ENV['CACHE_DRIVER'] ?? 'file', 'ttl' => (int) ($_ENV['CACHE_TTL'] ?? 3600), 'prefix' => $_ENV['CACHE_PREFIX'] ?? 'ecommerce_' ], // Session Configuration 'session' => [ 'lifetime' => (int) ($_ENV['SESSION_LIFETIME'] ?? 120), 'expire_on_close' => filter_var($_ENV['SESSION_EXPIRE_ON_CLOSE'] ?? false, FILTER_VALIDATE_BOOLEAN), 'cookie_name' => $_ENV['SESSION_COOKIE'] ?? 'ecommerce_session', 'cookie_path' => $_ENV['SESSION_PATH'] ?? $basePath ?: '/', 'cookie_domain' => $_ENV['SESSION_DOMAIN'] ?? null, 'cookie_secure' => filter_var($_ENV['SESSION_SECURE'] ?? false, FILTER_VALIDATE_BOOLEAN), 'cookie_http_only' => filter_var($_ENV['SESSION_HTTP_ONLY'] ?? true, FILTER_VALIDATE_BOOLEAN) ], // Rate Limiting 'rate_limit' => [ 'enabled' => filter_var($_ENV['RATE_LIMIT_ENABLED'] ?? true, FILTER_VALIDATE_BOOLEAN), 'requests_per_minute' => (int) ($_ENV['RATE_LIMIT_RPM'] ?? 60), 'burst_limit' => (int) ($_ENV['RATE_LIMIT_BURST'] ?? 10) ], // CORS Configuration 'cors' => [ 'allowed_origins' => explode(',', $_ENV['CORS_ALLOWED_ORIGINS'] ?? '*'), 'allowed_methods' => explode(',', $_ENV['CORS_ALLOWED_METHODS'] ?? 'GET,POST,PUT,DELETE,OPTIONS'), 'allowed_headers' => explode(',', $_ENV['CORS_ALLOWED_HEADERS'] ?? 'Content-Type,Authorization,X-Requested-With'), 'exposed_headers' => explode(',', $_ENV['CORS_EXPOSED_HEADERS'] ?? ''), 'max_age' => (int) ($_ENV['CORS_MAX_AGE'] ?? 86400), 'allow_credentials' => filter_var($_ENV['CORS_ALLOW_CREDENTIALS'] ?? true, FILTER_VALIDATE_BOOLEAN) ], // Logging Configuration 'logging' => [ 'level' => $_ENV['LOG_LEVEL'] ?? 'info', 'path' => __DIR__.'/../storage/logs', 'daily' => filter_var($_ENV['LOG_DAILY'] ?? true, FILTER_VALIDATE_BOOLEAN), 'max_files' => (int) ($_ENV['LOG_MAX_FILES'] ?? 14) ], // Backward compatibility - flat log config 'log_level' => $_ENV['LOG_LEVEL'] ?? 'info', 'log_path' => __DIR__.'/../storage/logs', // Payment Configuration 'payment' => [ 'default_gateway' => $_ENV['PAYMENT_GATEWAY'] ?? 'stripe', 'stripe' => [ 'public_key' => $_ENV['STRIPE_PUBLIC_KEY'] ?? '', 'secret_key' => $_ENV['STRIPE_SECRET_KEY'] ?? '', 'webhook_secret' => $_ENV['STRIPE_WEBHOOK_SECRET'] ?? '' ], 'paypal' => [ 'client_id' => $_ENV['PAYPAL_CLIENT_ID'] ?? '', 'client_secret' => $_ENV['PAYPAL_CLIENT_SECRET'] ?? '', 'mode' => $_ENV['PAYPAL_MODE'] ?? 'sandbox' // sandbox or live ] ], // Inventory Configuration 'inventory' => [ 'track_quantity' => filter_var($_ENV['TRACK_INVENTORY'] ?? true, FILTER_VALIDATE_BOOLEAN), 'allow_backorders' => filter_var($_ENV['ALLOW_BACKORDERS'] ?? false, FILTER_VALIDATE_BOOLEAN), 'low_stock_threshold' => (int) ($_ENV['LOW_STOCK_THRESHOLD'] ?? 10) ], // Order Configuration 'orders' => [ 'auto_complete_after_days' => (int) ($_ENV['AUTO_COMPLETE_ORDERS'] ?? 30), 'allow_guest_checkout' => filter_var($_ENV['ALLOW_GUEST_CHECKOUT'] ?? true, FILTER_VALIDATE_BOOLEAN), 'require_phone' => filter_var($_ENV['REQUIRE_PHONE'] ?? false, FILTER_VALIDATE_BOOLEAN) ] ];