diff --git a/modules/performance/php-optimizer.sh b/modules/performance/php-optimizer.sh index 5e6d6c5..c2da33c 100755 --- a/modules/performance/php-optimizer.sh +++ b/modules/performance/php-optimizer.sh @@ -1256,6 +1256,33 @@ calculate_optimal_opcache_memory() { echo "${memory}M" } +# Check if OPcache is disabled in domain's ini files (per-domain check) +is_opcache_disabled_in_domain() { + local username="$1" + local domain="$2" + + local ini_files + ini_files=$(find_php_ini_files "$username" "$domain") + + while IFS= read -r ini_file; do + [ -z "$ini_file" ] && continue + [ ! -f "$ini_file" ] && continue + + # Check if opcache.enable = 0 (explicitly disabled) + if grep -q "^opcache.enable.*=.*0" "$ini_file" 2>/dev/null; then + return 0 # OPcache IS disabled, needs enabling + fi + # Check if opcache.enable is not set at all + if ! grep -q "^opcache.enable" "$ini_file" 2>/dev/null; then + # Not explicitly set - may need enabling + # We'll return 0 to try enabling it + return 0 + fi + done <<< "$ini_files" + + return 1 # OPcache appears to be enabled +} + # Enable OPcache in php.ini enable_opcache() { local ini_file="$1" @@ -2225,8 +2252,8 @@ optimize_level_3_advanced() { intel_result=$(calculate_optimal_php_settings_intelligent "$username" "$total_ram_mb" "$server_capacity" "$traffic_pct" 2>/dev/null || echo "20|dynamic|1|5|ERROR|Failed") recommended_max_children["$domain"]=$(echo "$intel_result" | cut -d'|' -f1) - recommended_memory_limit["$domain"]=$(calculate_optimal_memory_limit "$username" "$domain" "$recommended_max_children[$domain]" 2>/dev/null || echo "128M") - recommended_max_requests["$domain"]=$(calculate_optimal_max_requests "$recommended_max_children[$domain]" 2>/dev/null || echo "0") + recommended_memory_limit["$domain"]=$(calculate_optimal_memory_limit "$username" "$domain" "${recommended_max_children[$domain]}" 2>/dev/null || echo "128M") + recommended_max_requests["$domain"]=$(calculate_optimal_max_requests "${recommended_max_children[$domain]}" 2>/dev/null || echo "0") fi local current_max @@ -2480,13 +2507,14 @@ optimize_level_4_opcache() { while IFS= read -r domain; do [ -z "$domain" ] && continue - if is_opcache_enabled "$username"; then - opcache_enabled["$domain"]="1" - already_enabled=$((already_enabled + 1)) - else + # Check per-domain ini files, not just per-user + if is_opcache_disabled_in_domain "$username" "$domain"; then opcache_needs_enable["$domain"]="1" needs_enable_count=$((needs_enable_count + 1)) cecho " ${YELLOW}⚠${NC} $domain: OPcache is disabled" + else + opcache_enabled["$domain"]="1" + already_enabled=$((already_enabled + 1)) fi done <<< "$user_domains" done <<< "$users" @@ -2773,7 +2801,8 @@ optimize_level_5_everything() { changes_count=$((changes_count + 1)) fi - if ! is_opcache_enabled "$username"; then + # Check per-domain ini files, not just per-user (fixes: all domains marked same if user has OPcache anywhere) + if is_opcache_disabled_in_domain "$username" "$domain"; then opcache_needs_enable["$domain"]="1" opcache_count=$((opcache_count + 1)) fi @@ -3217,11 +3246,11 @@ check_config_issues() { local has_medium=false local has_low=false - # Check for each severity level - echo "$issues" | grep -q "CRITICAL" && has_critical=true - echo "$issues" | grep -q "HIGH" && has_high=true - echo "$issues" | grep -q "MEDIUM" && has_medium=true - echo "$issues" | grep -q "LOW" && has_low=true + # Check for each severity level (add || true to handle no matches with set -o pipefail) + echo "$issues" | grep -q "CRITICAL" && has_critical=true || true + echo "$issues" | grep -q "HIGH" && has_high=true || true + echo "$issues" | grep -q "MEDIUM" && has_medium=true || true + echo "$issues" | grep -q "LOW" && has_low=true || true # Display CRITICAL if [ "$has_critical" = true ]; then