Commit Graph

8 Commits

Author SHA1 Message Date
cschantz 1dd950b358 Fix: Scan logs in subdirectories to catch all domain errors
Issue: Was missing 500 errors from logs stored in subdirectories like
/var/log/apache2/domlogs/username/domain.com

Changed from simple glob (domlogs/*) to recursive find command that:
- Scans all files in domlogs directory AND subdirectories
- Excludes system files (bytes_log, offset, error_log, ftpxferlog, ssl_log)
- Finds ALL domain access logs regardless of location

This ensures we catch errors like "GET /ay.php HTTP/1.1" 500 that were
previously missed in subdirectory logs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:17:45 -05:00
cschantz 6a6c8c036e Fix duplicate diagnostics and integer expression error in 500 tracker
Issues fixed:
- Removed duplicate diagnostic messages (was showing same error 169+ times)
- Fixed bash integer expression error at line 552
- Deduplicate diagnostics by domain+url+issue combination using sort -u
- Only save diagnostics when we have an actual identified cause
- Skip displaying UNKNOWN causes (these are now categorized as NO_PHP_ERROR_LOGGED)
- Show "X unique issues" instead of raw count to reflect deduplication

Now shows each unique domain+issue combination once, with proper counts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:06:18 -05:00
cschantz e21e4a9fb7 Enhance 500 error tracker: bot filtering, comprehensive validation, specific diagnostics
Major improvements to provide actionable, specific diagnostics instead of generic advice:

- Add bot/scanner filtering to reduce noise (monitors, SEO tools, security scanners, HTTP clients)
- Track and display filtered bot count in summary
- Remove all emojis from output
- Fix ANSI escape codes with echo -e for proper color rendering

Comprehensive file/permission validation:
- Resolve URLs to actual file paths being requested
- Test .htaccess readability by Apache (nobody user)
- Validate .htaccess syntax with apache2ctl -t
- Detect invalid PHP directives (php_value/php_flag without mod_php)
- Find malformed RewriteRule and orphaned RewriteCond
- Check document root and specific file permissions
- Test if files are readable by Apache user

Enhanced error extraction:
- Extract exact file paths from PHP errors
- Get line numbers for syntax errors
- Extract function names for missing function errors
- Get database usernames/names from DB errors
- Show current memory limits for memory exhaustion
- Identify specific files with permission issues

Add detailed per-URL diagnostics section:
- Show domain + URL + specific issue + file path + exact problem
- Group by error type with up to 20 examples per type
- Examples: "example.com/wp-admin - Permission denied on: /home/user/wp-config.php (perms: 600, owner: root:root) - NOT readable by Apache"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:00:27 -05:00
cschantz 1674a62eae Fix color variable display in 500 tracker output
ISSUE: Example text was showing raw ANSI codes like:
  \033[2mExample: domain.com...\033[0m

FIX: Added DIM and BOLD color variable definitions
  - These weren't being loaded from common-functions.sh
  - Now examples display properly with dim gray text

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 20:44:45 -05:00
cschantz 585785847b Filter out cPanel system logs from 500 error tracker
FILTERED LOG FILES:
- proxy (Apache reverse proxy logs)
- localhost (local connections)
- default (default vhost)
- cpanel, webmail, whm (cPanel services)
- cpcalendars, cpcontacts, webdisk (cPanel apps)

These are cPanel system services, not actual customer domains.
They were showing as 'unknown' user and cluttering results.

Now only tracks actual customer domain 500 errors.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 20:42:56 -05:00
cschantz e4eaf9afb5 Enhance 500 tracker error log detection and .htaccess diagnosis
IMPROVED ERROR LOG DETECTION:
- Now checks 5 different locations for error logs:
  • /home/USER/public_html/error_log
  • /home/USER/logs/error_log
  • /home/USER/error_log
  • /var/log/apache2/domlogs/DOMAIN-error_log
  • /usr/local/apache/domlogs/DOMAIN
- Increased tail from 100 to 500 lines for better error capture

NEW .HTACCESS DETECTION:
- If no error_log found, checks for .htaccess file
- Looks for RewriteRules, php_value, php_flag directives
- If found, classifies as 'HTACCESS_LIKELY' instead of 'NO_ERROR_LOG_FILE'
- Provides specific .htaccess troubleshooting steps

BETTER ROOT CAUSE CATEGORIES:
- HTACCESS_LIKELY: Has .htaccess with rules, likely syntax error
- NO_ERROR_LOG_FILE: Checked all locations, truly not found
- NO_PHP_ERROR_LOGGED: Error log exists but empty (Apache/config issue)

This should catch most of the 'NO_ERROR_LOG_FILE' cases and
correctly identify them as .htaccess syntax errors.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 20:42:19 -05:00
cschantz ab70a6e569 Add 30-day option to Fast 500 Error Tracker
- Added time range selection: 24 hours, 7 days, 30 days
- Default still 24 hours for speed
- Uses same time filtering as full analyzer

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 20:33:27 -05:00
cschantz b77e8bb9dd Add Fast 500 Error Tracker + Fix awk error in analyzer
NEW SCRIPT: modules/website/500-error-tracker.sh
- FAST-ONLY 500 error detection (no menus, no options)
- Scans access logs for 500 errors
- Maps domains to cPanel usernames
- Automatically diagnoses root causes by checking error_log files
- Shows actual PHP errors causing the 500s

ROOT CAUSE DETECTION:
- PHP Memory Exhausted (shows current limit)
- PHP Fatal Errors
- PHP Syntax Errors
- Missing PHP Functions/Extensions
- Database Connection Failures
- .htaccess Issues
- Shows ACTUAL error examples, not just suggestions

FIXES:
- Fixed awk error in website-error-analyzer.sh:
  • Changed "next" in END block to "if (length > 0)"
  • "next" cannot be used in END block in awk

- Added option 2 in Website Management menu
- Renumbered all WordPress tools (3-16)

DIFFERENCE FROM FULL ANALYZER:
Full Analyzer: All errors, filters, time ranges, user choices
Fast Tracker: ONLY 500s, auto-diagnosis, shows WHY not suggestions

Use Fast Tracker when you need to quickly find which domains
are getting 500 errors and the exact PHP errors causing them.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 20:32:19 -05:00