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:

КомпонентПримерЗначение
Основна8Значителни архитектурни промени, възможни пробивни промени
Незначителна8.2Нови функции, обратно съвместими подобрения
Кръпка8.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 File Manager: Отидете на public_html, намерете .htaccess, щракнете с дясно копче и изберете Редактиране.
      FTP/SFTP клиент: Свържете се със своя сървър и отидете на вашия уеб корен (обикновено public_html или www).
      SSH командна линия: nano /home/username/public_html/.htaccess

      > Забележка: .htaccess е скрит файл. В клиента на FTP активирайте “Показване на скрити файлове.” В cPanel File Manager отметнете “Показване на скрити файлове (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 вътрешна грешка на сървъра, име на обработчика е вероятно неправилно — премахнете реда и опитайте алтернативен синтаксис.

      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: Добавете хранилището на Ondřej Surý PHP

      Този 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}

      В някои хостинг среди, особено тези, които използват CGI или FastCGI обработчици на PHP, можете да влияете на поведението на 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 вътрешна грешка на сървъра

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

      Решение:

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

      Грешка 3: “Позов към неопределена функция” или “Клас не намерен”

      Причина: 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: Предупреждения за остаряла функция

      Причина: Вашият код използва функции, които са остарели в по-

      15%

      Спести 15% на всички хостинг услуги

      Тествай уменията си и получи Отстъпка за всеки хостинг план

      Използвайте код:

      Skills
      За начало