A blank page, a 500 error or "There has been a critical error on this website" right after switching PHP versions is a very common situation. Panicking and changing random settings only makes it worse. The recovery order is simple: get the site working again quickly, find the cause calmly, then move to the new version again.
The first five minutes: roll back
If the site broke immediately after the switch, the cause is almost certainly incompatibility with the new version, so the fastest fix is to restore the previous one. In ISPmanager, open the site from the sites list, choose the previous version in the PHP settings and save. In most cases the site recovers within seconds. Before rolling back, copy the last lines of the error log or at least note the error text; knowing the time and file of the failure speeds up the analysis.
Finding the cause in the log
Site logs can be viewed in the panel and are usually stored in the logs folder of your account under the domain name. Over SSH (file names may differ slightly by server):
tail -n 50 ~/logs/example.uz.error.log
grep "PHP Fatal error" ~/logs/example.uz.error.log | tail -n 20
Each line gives the error type, the message and the file path with a line number. The path often points straight to the culprit, such as a file in wp-content/plugins/old-slider/.
The most common errors
| Log message | Cause | Fix |
|---|---|---|
Call to undefined function mysql_connect() | mysql_* removed in PHP 7.0 | Move code to mysqli or PDO |
Call to undefined function create_function() or each() | Removed in PHP 8.0 | Update the plugin or code |
count(): Argument #1 ($value) must be of type Countable|array | Counting a non-array became an error in PHP 8 | Update the plugin or add a check |
Array and string offset access syntax with curly braces is no longer supported | $str{0} removed in PHP 8.0 | Use $str[0] |
Call to undefined function mb_strlen() | mbstring not enabled for the new version | Enable the extension in the panel |
requires the ionCube PHP Loader | Loader missing or incompatible | Enable the loader or get a compatible build from the vendor |
The last two are configuration issues: each PHP version has its own extension list. If you cannot enable an extension yourself, open a ticket from the sayt.uz cabinet.
Example: a restaurant site in Fergana
A Fergana restaurant runs example.uz on WordPress with an old slider plugin on the menu page. After moving from PHP 7.4 to 8.3, the owner saw the critical error message, switched back to 7.4 and the site recovered. The log showed count(): Argument #1 ($value) must be of type Countable|array, null given inside the slider plugin, which had not been updated for years. On a staging copy the owner replaced it with an actively maintained slider, confirmed everything worked on 8.3, then repeated the change on the live site and switched to 8.3 again.
WordPress also emails the administrator a recovery-mode link after a fatal error. If it does not arrive, rename the plugin folder (mv old-slider old-slider.off inside wp-content/plugins) and WordPress will skip it. To log errors to wp-content/debug.log instead of the screen, temporarily add these lines to wp-config.php, and remove them afterwards:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Before upgrading again
Test on a copy such as test.example.uz first, and check forms, the cart, payments and the admin area, since errors may appear only on specific pages. Back up beforehand, update every plugin and the theme, confirm the required extensions are enabled, switch during low traffic and watch the log for a day or two. Remember that rolling back is only temporary: old PHP versions get no security fixes, so set a firm date for the fix and the re-upgrade.