A blank page with a 200 status is PHP hitting a fatal error while display_errors is off. The error exists; it was written to a log instead of the screen. Nothing is broken beyond repair and the log will name the file and the line.

Read the log, do not turn on display_errors

Turning errors on in the browser shows your file paths to anyone who loads the page. The log has the same information and shows it to nobody.

tail -40 /var/log/php8.3-fpm.log\n# or, if the site sets its own:\ntail -40 /path/to/site/error_log

If the log is empty

Then PHP never got far enough to write one. Two causes, in order of likelihood:

  1. Memory — A script that exceeds memory_limit is killed before it can log. Raise it temporarily to see the real error: memory_limit = 512M
  2. A syntax error in an included file — php -l names it: php -l wp-config.php

On WordPress specifically

Nine times in ten it is a plugin or a theme updated minutes earlier. Rename the plugins directory - the site comes back with every plugin off, and renaming them back one at a time finds the one.

mv wp-content/plugins wp-content/plugins.off\n# site loads? rename back and re-enable one at a time
Add define("WP_DEBUG_LOG", true); to wp-config.php. The error goes to wp-content/debug.log and not to the screen.