Knowledge Base
Guides
Practical guides for detecting and fixing silent failures in WordPress, Drupal, and other systems. Written for engineers who want real answers, not marketing.
90 guides across WordPress, Drupal, and HashiCorp Vault. Jump to a platform: WordPress · Drupal · HashiCorp Vault · Cross-Platform · Concepts & General
WordPress
55 guidesCrash
PHP deprecation warnings after PHP 8.x upgrade — what to fix first
You upgraded to PHP 8.x and the site still loads, but wp-content/debug.log is now filling with "Deprecated:" notices. None of them are fatal…
Read guide →
CrashWordPress 500 internal server error — how to find the cause in logs
You open your WordPress site and the browser shows nothing but a sterile message: > 500 Internal Server Error No stack trace. No plugin name…
Read guide →
CrashWordPress PHP fatal — the causal chain from warning, to update, to fatal
You're staring at a WordPress fatal you didn't cause. The site worked at 14:02; it's white-screened at 14:05.…
Read guide →
CrashWordPress PHP warning spike — finding the plugin or file causing the flood
Yesterday your PHP error log was 4 MB. This morning it is 1.2 GB and still growing. You SSH in, run du -sh /var/log/php-fpm/, and watch the …
Read guide →
CrashWordPress REST API broken after a plugin update — finding which endpoint regressed
Your WordPress block editor is a spinner. The Gutenberg sidebar shows "Updating failed. The response is not a valid JSON response." A user o…
Read guide →
CrashWordPress fatal error — how to find what crashed your site
You hit your homepage and get a white screen, a generic "There has been a critical error on this website" message, or a hard HTTP 500. Admin…
Read guide →
CrashWordPress memory_limit exhausted — how to detect it before it crashes the site
Your WordPress admin shows a half-rendered page, or the front end dies mid-load with "Allowed memory size exhausted." Raising the memory lim…
Read guide →
CrashWordPress white screen of death — how to debug without admin access
You load your site and there is nothing. No header, no logo, no error, no 500 page. Just a flat white rectangle in the browser. View source …
Read guide →
Database
WordPress "Access denied for user" database errors — credential rotation, permission grants, and silent breakage
Your WordPress site is gone.…
Read guide →
DatabaseWordPress "Error establishing a database connection" — detection and root cause
You open your WordPress site and the page is gone. Instead of your homepage, the browser shows a single white page with one line of text: > …
Read guide →
DatabaseWordPress database deadlocks — causes and detection
You open your WordPress error log after a customer complaint and see this: WordPress database error Deadlock found when trying to get lock; …
Read guide →
DatabaseWordPress database disk full — detecting the silent failure before queries start failing
Your WordPress site is half-broken. The homepage still loads, but WP Admin throws a white error box, comments fail to save, WooCommerce chec…
Read guide →
DatabaseWordPress database timeout — when no single query is slow but the request times out
A WordPress request just timed out. nginx returned 504 Gateway Timeout, the user refreshed, the page eventually loaded, and you're staring a…
Read guide →
DatabaseWordPress slow queries — finding the plugin or theme responsible
Your WordPress admin takes 8 seconds to render /wp-admin/edit.php. The frontend feels sluggish on category pages. Occasionally a request tim…
Read guide →
DatabaseWordPress slow query surge — correlating the spike with the hook that triggered it
At 14:07 your monitoring pings you because MySQL CPU jumped from 12% to 78% in a minute. By 14:09 it is back at 12%. Five minutes later it d…
Read guide →
Performance
WordPress Admin Slow: How to Find What’s Slowing Down wp-admin
The frontend loads in 400ms. The admin takes 4 seconds. Nobody measures this gap - but editors and content teams feel it every day.…
Read guide →
PerformanceWordPress cache hit ratio degraded — why your site got slower without a code change
Yesterday the site felt fine. Today every page takes an extra second, the admin dashboard stutters, and PHP-FPM workers are visibly busier i…
Read guide →
PerformanceWordPress memory pressure on specific routes — finding the page or hook that eats memory
Last week your WordPress site was dying with Fatal error: Allowed memory size of 268435456 bytes exhausted. You doubled memorylimit to 512M …
Read guide →
PerformanceWordPress request latency — three causes, three drilldowns, one root cause
Your WordPress site is slow. Not down — slow. The homepage takes 4.…
Read guide →
PerformanceWordPress slow after plugin update — finding the hook that regressed
Tuesday at 3:14 PM the auto-updater ran. Wednesday morning support tickets start: "the editor is laggy", "Save Draft takes forever", "checko…
Read guide →
PerformanceWordPress slow page load — diagnosing high TTFB when queries look fine
Chrome DevTools shows "Waiting for server response" at 5.8 seconds on a normal post page. You SSH in, run SHOW PROCESSLIST, and MySQL is idl…
Read guide →
Cron
WordPress Cron Not Running: How to Detect and Fix It
WordPress cron is responsible for scheduled posts, plugin updates, email queues, and cache cleanup. When it stops, nothing warns you. Here&r…
Read guide →
CronWordPress cron hook stuck for years — finding silently dead scheduled hooks
You went looking for one slow scheduled job and found something worse. A row in wpoptions under cron has a nextrun timestamp from 2021. The …
Read guide →
CronWordPress cron reliability — using max vs average delay to find the blocking job
Your WordPress site looks healthy. Posts publish, logins work, the homepage is fast. But the average delay between a scheduled WP-Cron event…
Read guide →
CronWordPress scheduled posts not publishing — diagnosing missed cron jobs
You hit "Schedule" on a post for 9:00 AM. The editor confirms it. The post sits there with the status "Scheduled" — and 9:00 AM comes and go…
Read guide →
CronWordPress wp-cron disabled (DISABLE_WP_CRON=true) — how to verify your real cron actually works
You set DISABLEWPCRON=true in wp-config.php months ago and added a system crontab entry to call wp-cron.php directly. Everything looked fine…
Read guide →
WordPress Emails Not Sending: How to Detect and Fix It
Your WordPress contact form says “Message sent.” But was it actually delivered? In most cases, you have no way to know - until s…
Read guide →
EmailWordPress contact form submissions not arriving — full diagnosis
A customer messages you on LinkedIn: "I tried to contact you through your website three times last week and never heard back." You check the…
Read guide →
EmailWordPress sending hundreds of emails per hour — detecting registration spam before the host suspends you
You wake up to a support thread: customers can't reset their passwords, the contact form throws a "we couldn't deliver your message" error, …
Read guide →
EmailWordPress wp_mail Not Working: Causes, Detection, and Fixes
The wp_mail() function is how WordPress sends every email. When it breaks, there’s no error page, no warning, and no notification. Her…
Read guide →
Emailwp_mail() return value: what true and false actually mean
wp_mail() returns a boolean, but it only reports whether WordPress handed the message to the mail transport, not whether it was delivered. H…
Read guide →
Operations
Logystera WordPress plugin dropping events under load — what buffer drops mean and how to fix
You opened the Logystera dashboard for one of your WordPress entities and noticed something off. The request count is suspiciously round.…
Read guide →
OperationsWordPress Log Monitoring: See What Your Site Actually Does
WordPress debug.log is not monitoring. It’s a file nobody reads. Real WordPress log monitoring means structured events, derived metric…
Read guide →
OperationsWordPress PHP / core version changed unexpectedly — detecting environment drift
You log into your WordPress admin, click into Tools > Site Health, and the row that used to say PHP 8.1 now says PHP 8.2. Or you ran wp core…
Read guide →
OperationsWordPress Silent PHP Errors: How to Find Errors Nobody Sees
Production WordPress sites suppress error display. That’s correct. But suppressing display is not the same as handling errors. Here&rs…
Read guide →
OperationsWordPress Uptime vs Health: Why 99.9% Uptime Means Nothing
Your uptime monitor says 99.99%. Your contact form hasn’t delivered an email in 3 weeks. Both statements are true at the same time. He…
Read guide →
OperationsWordPress plugin auto-updates that broke your site — how to detect them in time
You open your laptop at 8:47 AM and the support inbox is full. "Site is showing a white page." "Checkout is broken." "I get a 500 error on e…
Read guide →
OperationsWordPress plugin silently activated or deactivated — who did it and when
You open the WordPress admin and notice something is off. A plugin you do not remember installing is active. Or a security plugin you rely o…
Read guide →
OperationsWordPress site slow for logged-in users only — detecting session floods and cache bypass
Your WordPress site is fast. Pingdom is green. The homepage TTFB is under 200ms. Then a customer support ticket comes in: "Site is unbearabl…
Read guide →
OperationsWordPress upload blocked — legitimate user or attack? How to tell
A user clicks Add Media, drags a file in, and WordPress throws: > Sorry, this file type is not permitted for security reasons.…
Read guide →
Security
WordPress "Sorry, you are not allowed to do that" — diagnosing capability check failures
Your editor is on Slack, frustrated. They opened /wp-admin/post.php?post=4912&action=edit, hit Update, and got a grey page with one line: "S…
Read guide →
SecurityWordPress Brute Force Attack Detection from Logs
Security plugins block attacks. But do you know how many are happening, when they spike, and which endpoints are targeted? Your logs do.…
Read guide →
SecurityWordPress REST API hammered with login attempts — how to detect credential stuffing
Your WordPress site is slow. The dashboard takes seven seconds to load. PHP-FPM workers are pinned. The Fail2Ban rule you set up two years a…
Read guide →
SecurityWordPress admin user added without your knowledge — how to detect privilege escalation
You log into /wp-admin/users.php and there it is: a WordPress admin user added without your knowledge. The username is something forgettable…
Read guide →
SecurityWordPress file integrity monitoring without a paid plugin
A core file under /wp-includes/, a plugin file under /wp-content/plugins/, or a theme functions.php is now different from the version that s…
Read guide →
SecurityWordPress hundreds of new users overnight — detecting bulk spam registration before they pollute your database
You opened wp-admin/users.php this morning and the user count went from 247 to 2,113 overnight.…
Read guide →
SecurityWordPress login attempt surge — distinguishing credential stuffing from scanner traffic
Your WordPress site is hammered with login attempts. The auth log is rolling. wpauthfailurestotal jumped from a flat baseline to thousands p…
Read guide →
SecurityWordPress logout you didn't perform — detecting session hijacking
You were editing a post, hit Update, and WordPress bounced you to /wp-login.php with the message "Your session has expired. Please log in ag…
Read guide →
SecurityWordPress wp-config.php was modified — how to detect unauthorized changes
You opened your WordPress site this morning and something is off. Maybe redirects to a sketchy domain. Maybe a strange admin user you do not…
Read guide →
SecurityWordPress xmlrpc.php under attack — detecting amplification and credential stuffing
Your access log is suddenly full of POST /xmlrpc.php. Thousands of them. Same endpoint, hundreds of IPs, no obvious pattern in the user-agen…
Read guide →
Abuse
WordPress 404 errors — separating real broken links from probe traffic and scrapers
You opened your access logs, or your SEO tool, or your hosting dashboard, and the 404 count looks wrong. Hundreds of them per hour. Maybe te…
Read guide →
AbuseWordPress RSS / Atom feeds hammered by scrapers — detection and rate-limiting
You open New Relic, htop, or your hosting panel and CPU is pinned at 90%+. PHP-FPM workers are saturated. The site itself loads, barely. You…
Read guide →
AbuseWordPress admin-ajax.php under heavy load — finding the action and the caller
Your WordPress site is sluggish. Load average is climbing, PHP-FPM workers are saturated, and every other line in the access log is a POST /…
Read guide →
AbuseWordPress bot traffic — identifying and blocking scrapers using request fingerprints
Your WordPress site is not under attack. Nobody is trying to log in. There is no error in the dashboard.…
Read guide →
AbuseWordPress site search overloading the database — detecting ?s= abuse and unbounded queries
Your WordPress site is crawling. TTFB is up to 4–8 seconds. The dashboard feels sluggish, but PHP isn't crashing and Uptime Robot is green. …
Read guide →
Drupal
29 guidesCrash
Database
Drupal site down — database connection refused (PDOException 2002 / 1045)
Your Drupal site is gone.…
Read guide →
DatabaseDrupal slow queries — drilling from total count to the calling module
You already know your Drupal site has slow queries. Pages take 4–8 seconds, /admin/content hangs, cron leaks past 20 minutes, SHOW PROCESSLI…
Read guide →
DatabaseDrupal slow queries — identifying the offending view or entity query
A category page that used to render in 400ms now takes seven, eight, sometimes twelve seconds. Admin overview tables crawl. A specific node …
Read guide →
Performance
Drupal cache.flush running every minute — detection and root cause
Your Drupal site feels heavy. Pages that should be served from cache in 50 ms are taking 1.5 to 4 seconds. Editors complain that the admin i…
Read guide →
PerformanceDrupal high cache miss rate — finding the path that's bypassing your cache layer
Your Drupal site is slower than it should be, PHP-FPM is sweating under traffic that used to be a non-event, and your reverse-proxy cache hi…
Read guide →
Cron
Drupal Cron Not Running: How to Detect and Fix It
Drupal cron handles search indexing, queue processing, cache expiration, and module maintenance. When it stops, the site still loads - but e…
Read guide →
CronDrupal Queue Not Processing: How to Detect Stuck Queues
Drupal’s Queue API handles newsletters, image processing, notifications, and batch operations. When queues stop processing, items accu…
Read guide →
CronDrupal queue workers stuck — finding the bad queue item
You open Drupal's status report. Cron last ran two minutes ago. The queue table — queue, or your Advanced Queue's advancedqueue — has 14,000…
Read guide →
Operations
Drupal blocks rearranged unexpectedly — detecting bulk block placement changes
You open the homepage and the right sidebar is gone. The newsletter block has moved from sidebarfirst to footerfourth. Three CTA blocks that…
Read guide →
OperationsDrupal config import (drush cim) failed — how to diagnose ConfigImportException
You ran drush cim -y on staging or production, expecting the usual quiet success, and the terminal threw it back at you.…
Read guide →
OperationsDrupal content published without going through moderation — detecting workflow bypass
A node went live this morning that nobody on the editorial team approved. The byline is correct, the body looks fine, the /node/4821 URL res…
Read guide →
OperationsDrupal deployment regression — correlating the deploy event with the five things that follow
The deploy went green. Five minutes later the site is broken. You're staring at the standard sequence: a CI pipeline that ended with drush d…
Read guide →
OperationsDrupal log noise — filtering watchdog to find real problems
You went to /admin/reports/dblog to investigate a single 500 error a user reported, and the page gave you 47,000 entries from the last 24 ho…
Read guide →
OperationsDrupal module installed without your knowledge — building an audit trail
You open /admin/modules and a row catches your eye. A module you do not recognize is enabled. Maybe a generic name like Admin Tools or Field…
Read guide →
OperationsDrupal redirect loop after content edit — detecting accidental cycles before users hit the redirect chain
A content editor renamed a node URL twenty minutes ago. Now users hitting /services/onboarding see Chrome's ERRTOOMANYREDIRECTS and Firefox'…
Read guide →
OperationsDrupal taxonomy term deletion silently 404'd half the site — detecting destructive vocabulary edits
A content editor opened /admin/structure/taxonomy/manage/tags/overview yesterday afternoon, decided the tags vocabulary was "messy," and del…
Read guide →
OperationsDrupal views being modified — change-tracking your views
A content editor opens the homepage and the "Latest articles" block is empty. Or it shows the wrong content type. Or the pager is gone. Or r…
Read guide →
Security
Drupal REST/JSON:API write operations from unexpected sources — detecting compromised API keys
A new node appears on the homepage you did not author. A user account you do not recognise shows up in admin/people with the role administra…
Read guide →
SecurityDrupal administrator role granted — detecting privilege escalation with per-user suppression
A user account that yesterday could only edit their own articles can now install modules, drop the users table from /admin/config/developmen…
Read guide →
SecurityDrupal failed login attempts — brute force detection on /user/login
You opened your Drupal site this morning and the admin dashboard was sluggish. The watchdog log scrolled past with hundreds of entries you d…
Read guide →
SecurityDrupal settings.php or services.yml was modified — who changed it and when
You logged in this morning and something is off. Maybe Drupal is suddenly running in a different database. Maybe the trusted host check is b…
Read guide →
SecurityDrupal theme switched unexpectedly — deployment marker, mistake, or compromise
You load the homepage and the site looks wrong. The header is in the wrong place. Custom branding is gone. The colours have reverted to a de…
Read guide →
SecurityDrupal user.role_changed — detecting privilege escalation
You log into your Drupal site and notice an account you don't recognise sitting in the administrator role. Or worse: an account you do recog…
Read guide →
Abuse
Drupal REST/JSON:API enumeration attempts — how to detect them
Your Drupal site is up. The status page is green. Pageviews on the dashboard look slightly elevated but nothing alarming.…
Read guide →
AbuseDrupal contact / webform submission spike — telling spam from real engagement
Your Drupal site is fine — but your inbox isn't. Since roughly 03:00 UTC, the contact form has been firing one notification email every 4 se…
Read guide →
AbuseDrupal site under backdoor probing — detecting webshell scanners and known-CMS probes
You opened the access log this morning and the screen would not stop scrolling. Hundreds of 404s a minute, all for files that have never exi…
Read guide →
AbuseWhy is my Drupal site getting WordPress scanner traffic? (and what to do about it)
You run a Drupal site. You don't run WordPress. You've never run WordPress. And yet your nginx access log is full of this: 185.220.101.42 - …
Read guide →
HashiCorp Vault
1 guideVault
Cross-Platform
1 guideCross-Platform
Concepts & General
4 guidesCrash
Operations
Security
General
Have a topic you want covered? Let us know.