Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

HTTP 500 / Deprecated PHP Linux / DevOps

Как безопасно обновить версию PHP на сервере без ошибки 500: инструкция для новичков

Обновлено: 27.08.2026 · Официальная документация ↗

Как проявляется сбой при некорректном обновлении PHP

Обновление версии PHP на «живом» сервере (Production) часто приводит к внезапной остановке работы сайтов и CMS (WordPress, Bitrix, Laravel). Основные симптомы некорректного перехода:

  • В браузере появляется Белый экран смерти (White Screen of Death) или ошибка HTTP 500 Internal Server Error.
  • Веб-сервер Nginx возвращает ошибку 502 Bad Gateway из-за того, что сокет старой службы PHP-FPM отключен, а новый еще не настроен.
  • В логах ошибок /var/log/nginx/error.log или /var/log/apache2/error.log фиксируются критические исключения Fatal error: Uncaught Error: Call to undefined function... из-за отсутствия нужных модулей.
  • Скрипты падают из-за синтаксических изменений и удаленных функций (например, удаление устаревших функций в PHP 8.x).

Сравнение рисков при обновлении PHP

СценарийЧто происходитПоследствия для сайта
Обновление «вслепую»Удаление старой версии и установка новой без проверки расширенийСайт падает с ошибкой 500/502, бизнес теряет клиентов
Параллельная установкаУстановка новой версии рядом со старой и плавное переключение сокетовБезопасный переход с возможностью мгновенного отката за 5 секунд

Пошаговый регламент безопасного обновления PHP

Главное правило системного администратора: никогда не удаляйте старую версию PHP до тех пор, пока новая полностью не протестирована. Linux позволяет держать на одном сервере несколько версий PHP одновременно.

  1. Шаг 1. Фиксируем список установленных модулей:

    Перед установкой новой версии сохраните список всех работающих модулей текущей версии (например, PHP 7.4 или 8.1):

    php -m > ~/php_modules_backup.txt
    php -v
  2. Шаг 2. Подключаем репозиторий со свежими версиями PHP:

    В Ubuntu для установки любых версий PHP используется доверенный репозиторий Ондрея Сури (Ondřej Surý):

    sudo apt update
    sudo apt install software-properties-common -y
    sudo add-apt-repository ppa:ondrej/php -y
    sudo apt update
  3. Шаг 3. Устанавливаем новую версию PHP с необходимыми модулями:

    Установим, например, PHP 8.3 вместе с базовыми расширениями, не удаляя текущую версию:

    sudo apt install php8.3 php8.3-fpm php8.3-mysql php8.3-cli php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip php8.3-intl -y
  4. Шаг 4. Настраиваем конфигурацию php.ini:

    Перенесите критические лимиты (память, размер загружаемых файлов) из старого файла в новый /etc/php/8.3/fpm/php.ini:

    sudo nano /etc/php/8.3/fpm/php.ini
    # Установите рабочие параметры:
    # memory_limit = 256M
    # upload_max_filesize = 64M
    # post_max_size = 64M
    # max_execution_time = 300

    Запустите службу новой версии:

    sudo systemctl restart php8.3-fpm
    sudo systemctl status php8.3-fpm
  5. Шаг 5. Переключаем веб-сервер на новую версию PHP:

    В конфигурации вашего сайта в Nginx (/etc/nginx/sites-available/yoursite.conf) измените путь к сокету обработки fastcgi:

    # Было: fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    # Стало:
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;

    Проверьте конфигурацию Nginx на ошибки и примените изменения:

    sudo nginx -t && sudo systemctl reload nginx

План быстрого отката: Если после переключения сайт выдал ошибку 500, не паникуйте. Откройте файл виртуального хоста Nginx, верните путь к старому сокету (php7.4-fpm.sock) и выполните sudo systemctl reload nginx. Сайт восстановит работу мгновенно.

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

Частые вопросы (FAQ)

Как переключить версию PHP для консоли (CLI)?

Используйте стандартную системную утилиту: sudo update-alternatives --config php и выберите нужный номер версии из появившегося списка.

Почему после смены сокета в Nginx появилась ошибка 502 Bad Gateway?

Ошибка 502 означает, что веб-сервер не может подключиться к сокету. Убедитесь, что служба новой версии запущена (sudo systemctl status php8.3-fpm) и проверьте точное имя сокета в каталоге /run/php/.

Как узнать, какие функции в моем PHP-коде устарели перед обновлением?

Включите отображение предупреждений в php.ini (error_reporting = E_ALL) на тестовой копии сайта или воспользуйтесь утилитой статического анализа PHP_CodeSniffer с базой PHPCompatibility.

Можно ли запускать два разных сайта на одном сервере с разными версиями PHP?

Да. В Nginx для каждого сайта (Server Block) указывается свой индивидуальный fastcgi_pass сокет (например, для сайта А — php7.4-fpm.sock, а для сайта Б — php8.3-fpm.sock).

Полезные материалы
Рекомендуем