A white page or a half-loaded admin screen says "Fatal error: Maximum execution time of 30 seconds exceeded in /wp-includes/... on line ...". It usually appears during an import, a backup, an image regeneration, a plugin update or a big WooCommerce report. It means PHP stopped one request because it ran longer than the server allows. The file it names is where PHP happened to be when the clock ran out, not the cause. The cause is whatever made that one request do too much work, or wait too long on something else.
/wp-content/plugins/<name>/ names the plugin that was running. A path under /wp-includes/ (for example class-wp-http-curl.php or class-wpdb.php) means WordPress was waiting on a remote server or on the database when the clock ran out.wp-content/debug.log with WP_DEBUG_LOG on) for the lines just before the fatal error; they often name the plugin or the slow query.max_execution_time). 60-120 seconds is normal for the admin side; it does not fix a hang, it only gives a big job room to finish.| What you see | What it means | Usual fix |
|---|---|---|
| Only during an import, backup or regeneration | One job too big for one request | Smaller batches, WP-CLI, or a raised limit for that job |
Path in /wp-content/plugins/<name>/ | That plugin was running when time ran out | Update, configure or replace that plugin |
Path in class-wp-http-curl.php or class-requests | Waiting on another server | Find the outside call; the host or the service is slow or blocked |
Path in class-wpdb.php | Waiting on a slow database query | Clean the database, add indexes, fix the report |
| On every page since an update | A plugin or theme now loops or hangs | Roll that one update back, then report it |
| "Allowed memory size exhausted" instead | Memory, not time | See the memory guide |
max_execution_time to 0 (no limit) or 3600 for the whole site. A hanging page then holds a server worker for an hour, and a few visitors at once take the site down.set_time_limit(0) into a theme or plugin file. It is overwritten at the next update and hides the real hang until then.Most of these are one oversized job or one plugin waiting on a slow outside service, and are gone once that job is batched or that plugin is fixed. If it happens on every page and the log does not name a plugin, that is what the box below is for. Related: memory exhausted, white screen and "There has been a critical error".