Как да промените версията на PHP във вашата хостинг среда (Пълно ръководство)
Управлението на вашата PHP версия е една от най-критичните административни задачи за всеки собственик на уебсайт или разработчик. Независимо дали надграждате, за да се възползвате от най-новите подобрения на производителността, понижавате версията за съвместимост на наследени приложения или поправяте уязвимости в сигурността, знанието как точно да превключвате PHP версии в различни хостинг среди е съществено умение. Този всеобхватен наръчник ви преведе през всеки наличен метод — от графичния интерфейс на cPanel до инструментите на командния ред на VPS Hosting и посветени сървъри.
Съдържание
- Защо управлението на PHP версията е важно
- Разбиране на PHP версиите и съвместимостта
- Метод 1: Промяна на PHP версията чрез cPanel (MultiPHP Manager)
- Метод 2: Промяна на PHP версията чрез .htaccess (Apache)
- Метод 3: Промяна на PHP версията чрез командния ред (VPS/Посветени сървъри)
- Метод 4: Промяна на PHP версията чрез php.ini
- Как да проверите активната PHP версия
- Често срещани грешки след превключване на PHP версии
- Най-добри практики за управление на PHP версията
- Заключение
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.0 | EOL | Избягвайте — без поправки на сигурността |
| PHP 7.4 | EOL | Само поддръжка на наследството |
| 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
- Отворете браузъра си и отидете на вашия URL за вход в cPanel:
https://yourdomain.com:2083 (защитен, препоръчан)
https://yourdomain.com/cpanelhttps://your-server-ip:2083- Въведете вашето потребителско име на cPanel и парола.
- Кликнете Вход.
Стъпка 2: Отворете MultiPHP Manager
- В контролния панел на cPanel преместете се към раздела Софтуер.
- Кликнете на MultiPHP Manager.
> Алтернатива: Някои конфигурации на cPanel обозначават това като Избор на PHP версия, PHP конфигурация или PHP селектор (последното е често срещано при хостинг, базиран на CloudLinux). Интерфейсът може да се различава леко, но процесът е същия.
Стъпка 3: Изберете вашия домейн и PHP версия
В интерфейса на MultiPHP Manager:
- Ще видите списък на всички домейни и поддомейни, хостирани на вашия акаунт.
- Отметнете квадратчето до домейна, който искате да модифицирате.
- От падащото меню PHP версия в горната част на страницата изберете желаната PHP версия (например
PHP 8.2). - Кликнете Приложи.
> Важно: Ако сте на акаунт за споделен хостинг, наличните PHP версии се определят от вашия хостинг доставчик. Ако имате нужда от версия, която не е в списъка, свържете се със екипа за поддръжка на вашия хост или помислете за надграждане на VPS Hosting план, където имате пълен контрол над инсталираните PHP версии.
Стъпка 4: (Опционално) Персонализирайте PHP настройките чрез MultiPHP INI Editor
След превключване на версии, може да е необходимо да коригирате стойностите на конфигурацията на PHP:
- Върнете се към раздела Софтуер в cPanel.
- Кликнете MultiPHP INI Editor.
- Изберете вашия домейн от падащото меню.
- Модифицирайте стойности като:
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 nginxCentOS / 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
- Създайте файл с име
php.iniв коренната директория на вашия уебсайт (public_html). - Добавете вашите директиви за конфигурация:
; 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()
- Създайте нов файл с име
phpinfo.phpв коренната директория на вашия уеб (public_html). - Добавете следното съдържание:
<?php
phpinfo();
?>- Отидете на
https://yourdomain.com/phpinfo.phpв браузъра си. - Страницата ще покаже подробна информация за конфигурацията на 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:
- Отидете на Инструменти → Здравословното състояние на сайта.
- Кликнете на раздела Информация.
- Разширете раздела Сървър.
- Потърсете 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: Предупреждения за остаряла функция
Причина: Вашият код използва функции, които са остарели в по-
