15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
01.11.2024

Как изменить версию PHP в вашей хостинг-среде (полное руководство)

Управление версией PHP — одна из наиболее критических административных задач для любого владельца веб-сайта или разработчика. Независимо от того, обновляетесь ли вы, чтобы воспользоваться последними улучшениями производительности, понижаете версию для совместимости с устаревшими приложениями или исправляете уязвимости безопасности, знание того, как именно переключать версии PHP в различных хостинг-средах, является необходимым навыком. Это подробное руководство проведет вас через все доступные методы — от графического интерфейса cPanel до инструментов командной строки на VPS Hosting и выделенных серверах.

Содержание

  1. Почему управление версией PHP имеет значение
  2. Понимание версий PHP и совместимости
  3. Метод 1: Изменение версии PHP через cPanel (MultiPHP Manager)
  4. Метод 2: Изменение версии PHP через .htaccess (Apache)
  5. Метод 3: Изменение версии PHP через командную строку (VPS/выделенные серверы)
  6. Метод 4: Изменение версии PHP через php.ini
  7. Как проверить активную версию PHP
  8. Распространенные ошибки после переключения версий PHP
  9. Лучшие практики управления версией PHP
  10. Заключение

1. Почему управление версией PHP имеет значение {#why-it-matters}

PHP используется более чем на 77% всех веб-сайтов с известным серверным языком, включая основные платформы, такие как WordPress, Joomla, Drupal и Magento. Каждый основной выпуск PHP вводит значительные изменения:

  • Прирост производительности: PHP 8.x значительно быстрее, чем PHP 5.x или 7.x, благодаря компилятору JIT (Just-In-Time).
  • Патчи безопасности: Старые версии PHP в конечном итоге достигают конца жизни (EOL) и больше не получают обновления безопасности, оставляя ваш сайт уязвимым.
  • Совместимость приложений: Некоторые старые плагины, темы или пользовательские приложения были написаны для конкретных версий PHP и могут сломаться в новых выпусках.
  • Соответствие хостингу: Многие хостинг-провайдеры требуют минимальные версии PHP для поддержания стандартов безопасности сервера.

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

2. Понимание версий PHP и совместимости {#understanding-versions}

Перед внесением каких-либо изменений важно понять жизненный цикл выпуска PHP и способ структурирования версий.

Нумерация версий PHP

PHP следует схеме версионирования MAJOR.MINOR.PATCH:

КомпонентПримерЗначение
Major8Значительные архитектурные изменения, возможные критические изменения
Minor8.2Новые функции, обратно совместимые улучшения
Patch8.2.10Только исправления ошибок и патчи безопасности

Жизненный цикл поддержки PHP

Каждая дополнительная версия PHP получает:

  • Активную поддержку примерно на 2 года (исправления ошибок + патчи безопасности)
  • Поддержку только безопасности в течение дополнительного 1 года
  • Конец жизни (EOL), после чего патчи больше не выпускаются

Поддерживаемые версии PHP (по состоянию на 2024–2025)

Версия PHPСтатусПримечания
PHP 8.3Активная поддержкаПоследний стабильный выпуск
PHP 8.2Активная поддержкаРекомендуется для большинства приложений
PHP 8.1Только безопасностьПо-прежнему широко используется
PHP 8.0EOLИзбегайте — нет патчей безопасности
PHP 7.4EOLТолько поддержка устаревшего кода
PHP 7.3 и нижеEOLНастоятельно не рекомендуется

> Практическое правило: Всегда используйте самую высокую версию PHP, которую официально поддерживает ваше приложение. Если ваша CMS или фреймворк поддерживает PHP 8.2, нет причины использовать PHP 7.4.

3. Метод 1: Изменение версии PHP через cPanel (MultiPHP Manager) {#cpanel-method}

cPanel — это наиболее широко используемая панель управления хостингом, и она предоставляет два встроенных инструмента для управления версией PHP: MultiPHP Manager (на уровне сервера или для каждого домена) и MultiPHP INI Editor (для точной настройки параметров PHP). Если вы используете VPS с cPanel, оба инструмента доступны вам.

Шаг 1: Войдите в cPanel

  1. Откройте браузер и перейдите на URL входа cPanel:
    https://yourdomain.com:2083 (безопасный, рекомендуется)
    https://yourdomain.com/cpanel
  • Или прямой IP: https://your-server-ip:2083
    1. Введите имя пользователя cPanel и пароль.
    2. Нажмите Вход.

    Шаг 2: Откройте MultiPHP Manager

    1. На панели управления cPanel прокрутите до раздела Программное обеспечение.
    2. Нажмите на MultiPHP Manager.

    > Альтернатива: В некоторых установках cPanel это может быть обозначено как Выбрать версию PHP, Конфигурация PHP или Селектор PHP (последний распространен на хостинге на основе CloudLinux). Интерфейс может немного отличаться, но процесс одинаков.

    Шаг 3: Выберите ваш домен и версию PHP

    В интерфейсе MultiPHP Manager:

    1. Вы увидите список всех доменов и поддоменов, размещенных в вашей учетной записи.
    2. Установите флажок рядом с доменом, который вы хотите изменить.
    3. В раскрывающемся списке Версия PHP в верхней части страницы выберите нужную версию PHP (например, PHP 8.2).
    4. Нажмите Применить.

    > Важно: Если вы используете учетную запись общего хостинга, доступные версии PHP определяются вашим хостинг-провайдером. Если вам нужна версия, которой нет в списке, свяжитесь с командой поддержки вашего хоста или рассмотрите возможность обновления до плана VPS Hosting, где у вас есть полный контроль над установленными версиями PHP.

    Шаг 4: (Опционально) Настройте параметры PHP через MultiPHP INI Editor

    После переключения версий вам может потребоваться отрегулировать значения конфигурации PHP:

    1. Вернитесь в раздел Программное обеспечение в cPanel.
    2. Нажмите MultiPHP INI Editor.
    3. Выберите ваш домен из раскрывающегося списка.
    4. Измените значения, такие как:
      memory_limit (например, 256M)
      upload_max_filesize (например, 64M)
      max_execution_time (например, 300)
      post_max_size (например, 64M)
      
      
      Нажмите Применить, чтобы сохранить изменения.
      
      Шаг 5: Проверьте изменение
      Создайте тестовый файл, чтобы подтвердить активную версию PHP (см. раздел 7 для полных инструкций).
      4. Метод 2: Изменение версии PHP через .htaccess (Apache) {#htaccess-method}
      Если ваша хостинг-среда работает на Apache, но не предоставляет графический селектор PHP, вы можете контролировать версию PHP непосредственно через файл .htaccess. Этот метод особенно полезен на планах Shared Web Hosting, где доступ на уровне сервера ограничен.
      Как это работает
      Apache использует обработчики для определения того, как обрабатываются файлы .php. Указав пользовательский обработчик в .htaccess, вы указываете Apache использовать конкретную версию PHP для вашего сайта.
      Шаг 1: Получите доступ к файлу .htaccess
      Вы можете редактировать .htaccess через:
      
      Менеджер файлов cPanel: Перейдите в public_html, найдите .htaccess, щелкните правой кнопкой мыши и выберите Редактировать.
      Клиент FTP/SFTP: Подключитесь к вашему серверу и перейдите в корневой каталог веб-сайта (обычно public_html или www).
      Командная строка SSH: nano /home/username/public_html/.htaccess

      > Примечание: .htaccess — это скрытый файл. В вашем клиенте FTP включите «Показать скрытые файлы». В менеджере файлов cPanel установите флажок «Показать скрытые файлы (dotfiles)» в настройках в правом верхнем углу.

      Шаг 2: Добавьте директиву обработчика PHP

      Добавьте одну из следующих строк в файл .htaccess, в зависимости от соглашения об именовании обработчика PHP вашего сервера:

      Для PHP 8.2:

      AddHandler application/x-httpd-php82 .php

      Для PHP 8.1:

      AddHandler application/x-httpd-php81 .php

      Для PHP 7.4 (устаревший):

      AddHandler application/x-httpd-php74 .php

      Альтернативный синтаксис (используется на некоторых хостах):

      # Using suPHP or FastCGI
      Action php-cgi /cgi-bin/php82
      AddHandler php-cgi .php

      > Важно: Точное имя обработчика (x-httpd-php82, x-httpd-php81 и т. д.) зависит от того, как ваш хостинг-провайдер настроил PHP на своих серверах. Если вышеуказанное не работает, проверьте документацию вашего хоста или свяжитесь с поддержкой для получения правильных имен обработчиков.

      Шаг 3: Сохраните и протестируйте

      Сохраните файл .htaccess и протестируйте ваш сайт. Если вы видите ошибку 500 Internal Server Error, имя обработчика, вероятно, неправильно — удалите строку и попробуйте альтернативный синтаксис.

      5. Метод 3: Изменение версии PHP через командную строку (VPS/выделенные серверы) {#cli-method}

      Если вы управляете собственными выделенными серверами или VPS с доступом root, у вас есть полный контроль над установкой PHP и переключением версий. Это наиболее мощный и гибкий метод.

      Предварительные требования

      • Доступ root или sudo к вашему серверу
      • SSH клиент (Terminal на macOS/Linux, PuTTY или Windows Terminal на Windows)
      • Базовое знакомство с операциями командной строки Linux

      Ubuntu / Debian — использование update-alternatives

      Системы на основе Ubuntu и Debian используют систему update-alternatives для управления несколькими версиями PHP одновременно.

      #### Шаг 1: Добавьте репозиторий PHP Ondřej Surý

      Этот PPA предоставляет несколько версий PHP для Ubuntu/Debian:

      sudo apt update
      sudo apt install -y software-properties-common
      sudo add-apt-repository ppa:ondrej/php
      sudo apt update

      #### Шаг 2: Установите нужную версию PHP

      # Install PHP 8.2 and common extensions
      sudo apt install -y php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-curl 
          php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip php8.2-bcmath
      
      # Install PHP 8.1 if needed
      sudo apt install -y php8.1 php8.1-cli php8.1-fpm php8.1-mysql

      #### Шаг 3: Переключите версию PHP по умолчанию (CLI)

      # View all registered PHP alternatives
      sudo update-alternatives --list php
      
      # Switch to PHP 8.2
      sudo update-alternatives --set php /usr/bin/php8.2
      
      # Or use the interactive selector
      sudo update-alternatives --config php

      Интерактивный селектор отобразит что-то вроде:

      There are 3 choices for the alternative php (providing /usr/bin/php).
      
        Selection    Path             Priority   Status
      ------------------------------------------------------------
      * 0            /usr/bin/php8.2   82        auto mode
        1            /usr/bin/php7.4   74        manual mode
        2            /usr/bin/php8.1   81        manual mode
        3            /usr/bin/php8.2   82        manual mode
      
      Press <enter> to keep the current choice[*], or type selection number:

      Введите номер, соответствующий нужной версии, и нажмите Enter.

      #### Шаг 4: Переключите версию PHP для Apache (mod_php)

      # Disable current PHP module (e.g., PHP 8.1)
      sudo a2dismod php8.1
      
      # Enable new PHP module (e.g., PHP 8.2)
      sudo a2enmod php8.2
      
      # Restart Apache
      sudo systemctl restart apache2

      #### Шаг 5: Переключите версию PHP для Nginx (PHP-FPM)

      Для Nginx PHP обрабатывается через PHP-FPM. Обновите блок сервера Nginx, чтобы указать на правильный сокет FPM:

      # In your Nginx server block configuration
      location ~ .php$ {
          fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
          fastcgi_index index.php;
          include fastcgi_params;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      }

      Затем перезагрузите PHP-FPM и Nginx:

      sudo systemctl restart php8.2-fpm
      sudo systemctl restart nginx

      CentOS / RHEL / AlmaLinux / Rocky Linux — использование SCL или репозитория Remi

      #### Вариант A: Использование Software Collections (SCL) — CentOS 7

      # Install the SCL repository
      sudo yum install -y centos-release-scl
      
      # Install PHP 7.4 via SCL
      sudo yum install -y rh-php74 rh-php74-php-fpm rh-php74-php-mysqlnd
      
      # Enable PHP 7.4 for the current session
      sudo scl enable rh-php74 bash
      
      # Verify
      php --version

      > Примечание: Изменения SCL зависят от сеанса. Чтобы сделать их постоянными для пользователя, добавьте source /opt/rh/rh-php74/enable в ~/.bashrc.

      #### Вариант B: Использование репозитория Remi — CentOS 7/8, AlmaLinux, Rocky Linux

      # Install EPEL and Remi repositories
      sudo dnf install -y epel-release
      sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm  # For RHEL 8/AlmaLinux 8
      
      # List available PHP streams
      sudo dnf module list php
      
      # Reset current PHP module
      sudo dnf module reset php
      
      # Enable PHP 8.2 stream
      sudo dnf module enable php:remi-8.2
      
      # Install PHP 8.2
      sudo dnf install -y php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-xml php-zip
      
      # Verify
      php --version

      Переключение PHP для отдельных сайтов (версия PHP для каждого сайта)

      На серверах, на которых размещены несколько веб-сайтов, часто требуются разные версии PHP для каждого сайта. Самый чистый подход — запустить несколько пулов PHP-FPM:

      # Start PHP-FPM for multiple versions
      sudo systemctl start php7.4-fpm
      sudo systemctl start php8.1-fpm
      sudo systemctl start php8.2-fpm

      Затем настройте каждый виртуальный хост Nginx для использования другого сокета FPM:

      # Site A — PHP 8.2
      server {
          server_name site-a.com;
          root /var/www/site-a;
          location ~ .php$ {
              fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
          }
      }
      
      # Site B — PHP 7.4 (legacy application)
      server {
          server_name site-b.com;
          root /var/www/site-b;
          location ~ .php$ {
              fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
          }
      }

      6. Метод 4: Изменение версии PHP через php.ini {#phpini-method}

      В некоторых хостинг-средах, особенно в тех, которые используют обработчики PHP CGI или FastCGI, вы можете влиять на поведение PHP — и иногда даже на версию — через пользовательский файл php.ini, размещенный в корневом каталоге вашего веб-сайта.

      Создание пользовательского php.ini

      1. Создайте файл с именем php.ini в корневом каталоге вашего веб-сайта (public_html).
      2. Добавьте ваши директивы конфигурации:
      ; Custom PHP configuration
      memory_limit = 256M
      upload_max_filesize = 64M
      post_max_size = 64M
      max_execution_time = 300
      max_input_vars = 3000
      date.timezone = "UTC"

      > Примечание: Этот метод контролирует параметры PHP, а не обязательно саму версию PHP. Выбор версии через php.ini возможен только в определенных хостинг-установках. Для полного контроля версии используйте методы cPanel, .htaccess или командной строки, описанные выше.

      7. Как проверить активную версию PHP {#verify}

      После внесения каких-либо изменений всегда проверяйте, что активна правильная версия PHP. Есть несколько способов сделать это:

      Метод A: Создайте тестовую страницу phpinfo()

      1. Создайте новый файл с именем phpinfo.php в корневом каталоге веб-сайта (public_html).
      2. Добавьте следующее содержимое:
      <?php
      phpinfo();
      ?>
      1. Перейдите на https://yourdomain.com/phpinfo.php в вашем браузере.
      2. На странице будет отображена подробная информация о конфигурации PHP. Версия PHP показана в самом верху.

      > Предупреждение безопасности: Удалите этот файл сразу же после тестирования. Вывод phpinfo() раскрывает конфиденциальные детали конфигурации сервера, которые могут помочь злоумышленникам.

      Метод B: Проверьте через командную строку (SSH)

      php --version
      # or
      php -v

      Ожидаемый вывод:

      PHP 8.2.10 (cli) (built: Sep  5 2023 08:12:49) (NTS)
      Copyright (c) The PHP Group
      Zend Engine v4.2.10, Copyright (c) Zend Technologies
          with Zend OPcache v8.2.10, Copyright (c), by Zend Technologies

      Метод C: Проверьте через простой скрипт PHP

      Для менее подробной проверки используйте этот минимальный скрипт вместо полного phpinfo():

      <?php
      echo 'PHP Version: ' . PHP_VERSION;
      echo '<br>PHP Major Version: ' . PHP_MAJOR_VERSION;
      echo '<br>PHP Minor Version: ' . PHP_MINOR_VERSION;
      ?>

      Метод D: Проверьте через администратор WordPress (для сайтов WordPress)

      На панели управления WordPress:

      1. Перейдите в Инструменты → Здоровье сайта.
      2. Нажмите на вкладку Информация.
      3. Разверните раздел Сервер.
      4. Найдите версию PHP.

      8. Распространенные ошибки после переключения версий PHP {#common-errors}

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

      Ошибка 1: Белый экран смерти (WSOD) или пустая страница

      Причина: Плагин, тема или пользовательский код использует синтаксис или функции, несовместимые с новой версией PHP.

      Решение:

      • Включите режим отладки WordPress, добавив в wp-config.php:
        define('WP_DEBUG', true);
        define('WP_DEBUG_LOG', true);
        define('WP_DEBUG_DISPLAY', false);
      • Проверьте /wp-content/debug.log на предмет конкретных сообщений об ошибках.
      • Деактивируйте все плагины и переключитесь на тему по умолчанию, чтобы изолировать проблему.

      Ошибка 2: Ошибка 500 Internal Server Error

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

      Решение:

      • Удалите или исправьте директиву AddHandler в .htaccess.
      • Проверьте журнал ошибок вашего сервера: tail -f /var/log/apache2/error.log или tail -f /var/log/nginx/error.log.
      • Убедитесь, что требуемые расширения PHP установлены для новой версии.

      Ошибка 3: «Call to undefined function» или «Class not found»

      Причина: Расширение PHP, требуемое вашим приложением (например, php-gd, php-mbstring, php-xml), не установлено для новой версии PHP.

      Решение:

      # Ubuntu/Debian — install missing extensions for PHP 8.2
      sudo apt install php8.2-gd php8.2-mbstring php8.2-xml php8.2-curl php8.2-zip
      
      # Restart web server
      sudo systemctl restart apache2  # or nginx

      Ошибка 4: Предупреждения об устаревших функциях

      Причина: Ваш код использует функции, которые были объявлены устаревшими в старых версиях PHP и удалены в новых (например, функции mysql_* удалены в PHP 7.0).

      Решение:

      • Обновите ваш код или плагины для использования современных эквивалентов (например, ###PPT_
      15%

      Сэкономьте 15% на всех хостинговых услугах

      Проверьте свои навыки и получите скидку на любой тарифный план

      Используйте код:

      Skills
      Начать