🛠️
Хостинг

Сайт сломался после обновления PHP: быстрое восстановление

14.11.2026
← Все статьи

Белая страница, ошибка 500 или сообщение «На сайте произошла критическая ошибка» сразу после смены версии PHP — очень частая ситуация. Паника и случайные изменения настроек только запутывают дело. На самом деле порядок восстановления простой: сначала быстро вернуть сайт в рабочее состояние, затем спокойно найти причину и только потом снова перейти на новую версию. Разберём этот порядок на практическом примере.

Первые пять минут: вернуть сайт в рабочее состояние

Если сайт сломался сразу после смены версии PHP, причина почти наверняка в несовместимости с новой версией. Поэтому самое быстрое решение — вернуть прежнюю версию. В панели ISPmanager откройте нужный сайт в списке сайтов, выберите в настройках PHP предыдущую версию и сохраните. В большинстве случаев сайт снова заработает через несколько секунд, и клиенты даже не заметят проблемы.

Перед откатом полезно сделать одно действие: скопировать последние строки журнала ошибок или хотя бы записать текст ошибки. После запуска сайта эта информация останется в журнале, но если заранее знать время и файл ошибки, дальнейший анализ пойдёт быстрее.

Поиск причины в журнале

Белая страница или ошибка 500 ничего не говорят посетителю, но в журнале сервера причина записана точно. В ISPmanager журналы сайта можно посмотреть прямо в панели; обычно они хранятся в папке logs вашего аккаунта под именем домена. Если есть доступ по SSH, последние строки можно посмотреть так (имя файла может немного отличаться в зависимости от сервера):

# Последние 50 строк
tail -n 50 ~/logs/example.uz.error.log

# Только фатальные ошибки
grep "PHP Fatal error" ~/logs/example.uz.error.log | tail -n 20

В строке журнала есть три важных элемента: тип ошибки, текст сообщения и путь к файлу с номером строки. Путь часто сразу указывает на проблемный плагин или тему, например на файл в папке wp-content/plugins/old-slider/. Так круг поиска сужается до одного компонента.

Самые частые ошибки и что они означают

При переходе старого кода на новый PHP одни и те же ошибки встречаются снова и снова. Таблица поможет быстро их распознать:

Сообщение в журналеПричинаНаправление решения
Call to undefined function mysql_connect()Функции mysql_* удалены в PHP 7.0Перевести код на mysqli или PDO
Call to undefined function create_function() или each()Удалены в PHP 8.0Обновить плагин или код
count(): Argument #1 ($value) must be of type Countable|arrayВ PHP 8 подсчёт не-массива стал ошибкойОбновить плагин или добавить проверку в код
Array and string offset access syntax with curly braces is no longer supportedЗапись $str{0} удалена в PHP 8.0Заменить на $str[0]
Call to undefined function mb_strlen()В новой версии не включено расширение mbstringВключить расширение в панели
requires the ionCube PHP LoaderЗагрузчик для закодированного скрипта отсутствует или несовместимВключить загрузчик или получить совместимую версию у разработчика скрипта

Последние два случая связаны не с кодом, а с настройками. У каждой версии PHP свой набор расширений, и включённое в старой версии расширение может быть выключено в новой. Тогда трогать код не нужно — достаточно включить расширение в панели. Если не получается сделать это самостоятельно, напишите тикет в техподдержку из кабинета sayt.uz.

Пример: сайт ресторана в Фергане

Сайт ресторана в Фергане example.uz работает на WordPress, на странице меню установлен старый плагин слайдера. Владелец перешёл с PHP 7.4 на 8.3 и вместо главной страницы увидел «На сайте произошла критическая ошибка». Первым делом он вернул 7.4, и сайт сразу восстановился. Затем в журнале нашлась ошибка count(): Argument #1 ($value) must be of type Countable|array, null given с путём к файлу в папке плагина слайдера.

Плагин не обновлялся несколько лет, так что ждать исправления не имело смысла. На тестовой копии владелец удалил его, установил другой активно поддерживаемый слайдер и заново разместил фотографии меню. Когда тестовая копия заработала на 8.3 без ошибок, те же изменения сделали на основном сайте и снова переключили PHP на 8.3.

Дополнительные инструменты WordPress

При фатальной ошибке WordPress отправляет на почту администратора письмо со ссылкой на режим восстановления. По ней можно войти в админку и отключить проблемный плагин. Если письмо не пришло, плагин можно отключить, переименовав его папку через файловый менеджер или SSH: WordPress не загружает плагин из переименованной папки.

cd ~/www/example.uz/wp-content/plugins
mv old-slider old-slider.off

Чтобы ошибки записывались в файл, а не выводились на экран, можно временно добавить в wp-config.php строки ниже. Ошибки будут записываться в wp-content/debug.log. После проверки уберите эти настройки, так как файл журнала может быть доступен извне.

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

Что сделать перед повторным обновлением

Когда причина найдена и устранена, переходить на новую версию нужно без спешки. Надёжнее всего сначала проверить всё на тестовой копии: скопировать сайт на поддомен, например test.example.uz, назначить ему новую версию PHP и по очереди открыть основные страницы. Особенно важно проверить отправку форм, корзину, оплату и админку, потому что ошибка может проявляться только на конкретной странице.

Помните, что откат версии — лишь временное решение. Старые версии PHP не получают исправлений безопасности, поэтому, когда сайт снова заработал, не стоит успокаиваться: назначьте конкретный срок для исправления и повторного обновления.

Похожие статьи

🐍 Как разместить бота на aiogram на сервере: virtualenv, systemd и webhook 🔀 Переезд с cPanel на ISPmanager: файлы, базы, почта и DNS 🖥️ Терминал в панели быстро отключается: причины и правильное SSH-подключение 🔍 Как найти большие файлы, которые занимают место на хостинге: команды и приёмы
🌐 Язык
🇺🇿 O'zbek 🇺🇿 Ўзбек 🇷🇺 Русский ✓ 🇬🇧 English