diff --git a/modules/performance/php-optimizer.sh b/modules/performance/php-optimizer.sh index 85016ab..ee4a948 100755 --- a/modules/performance/php-optimizer.sh +++ b/modules/performance/php-optimizer.sh @@ -670,6 +670,35 @@ optimize_domain() { cecho "${CYAN}─────────────────────────────────────────────────────────────────────${NC}" if [ "$changes_made" -gt 0 ]; then + # Validate the pool config before reloading + cecho "${CYAN}Validating configuration...${NC}" + local config_valid=true + + if [ -n "$pool_config" ] && [ -f "$pool_config" ]; then + if ! validate_pool_config "$pool_config" >/dev/null 2>&1; then + cecho "${RED}✗ Configuration validation failed!${NC}" + cecho "${YELLOW}The modified configuration has syntax errors.${NC}" + config_valid=false + + # Offer to rollback + if confirm "Rollback changes?"; then + cecho "${CYAN}Rolling back configuration...${NC}" + if rollback_domain_config "$username" "$domain" >/dev/null 2>&1; then + cecho "${GREEN}✓ Configuration restored from backup${NC}" + else + cecho "${RED}✗ Rollback failed - manual recovery may be needed${NC}" + cecho "${YELLOW}Backup location: $backup_dir${NC}" + fi + echo "" + read -p "Press Enter to continue..." + return + fi + else + cecho "${GREEN}✓ Configuration is valid${NC}" + fi + fi + + echo "" cecho "${GREEN}${BOLD}✓ Applied $changes_made optimization(s)${NC}" if [ "$changes_failed" -gt 0 ]; then @@ -688,20 +717,43 @@ optimize_domain() { cecho "${CYAN}Restarting PHP-FPM ($php_version)...${NC}" if reload_php_fpm "$php_version" >/dev/null 2>&1; then - cecho "${GREEN}✓ PHP-FPM reloaded successfully${NC}" + cecho "${GREEN}✓ PHP-FPM reloaded${NC}" # Verify it's running - sleep 1 + sleep 2 if verify_php_fpm_running "$php_version" >/dev/null 2>&1; then - cecho "${GREEN}✓ PHP-FPM is running${NC}" + cecho "${GREEN}✓ PHP-FPM is running and accepting connections${NC}" + + # Verify applied changes - check if new config loaded + local verify_result + verify_result=$(verify_applied_changes "$username" "$domain" 2>/dev/null || echo "") + + if [ -n "$verify_result" ]; then + cecho "${GREEN}✓ New configuration loaded successfully${NC}" + fi else - cecho "${RED}✗ WARNING: PHP-FPM may not be running!${NC}" - cecho "${YELLOW}Run: systemctl status ea-php${php_version#ea-php}-php-fpm${NC}" + cecho "${RED}✗ WARNING: PHP-FPM is not responding!${NC}" + cecho "${YELLOW}Service may have crashed due to invalid configuration.${NC}" + cecho "${YELLOW}Attempting rollback...${NC}" + + if rollback_domain_config "$username" "$domain" >/dev/null 2>&1; then + cecho "${GREEN}✓ Configuration rolled back${NC}" + cecho "${YELLOW}Restart PHP-FPM manually once this script completes${NC}" + else + cecho "${RED}✗ Rollback failed - manual recovery needed${NC}" + cecho "${YELLOW}Backup location: $backup_dir${NC}" + fi fi else cecho "${RED}✗ Failed to restart PHP-FPM${NC}" - cecho "${YELLOW}You may need to restart manually:${NC}" - cecho "${YELLOW}systemctl restart ea-php${php_version#ea-php}-php-fpm${NC}" + cecho "${YELLOW}Attempting rollback...${NC}" + + if rollback_domain_config "$username" "$domain" >/dev/null 2>&1; then + cecho "${GREEN}✓ Configuration rolled back to previous state${NC}" + else + cecho "${RED}✗ Rollback failed - manual recovery may be needed${NC}" + cecho "${YELLOW}Backup location: $backup_dir${NC}" + fi fi else cecho "${YELLOW}Skipping restart - remember to restart PHP-FPM manually!${NC}"