Jak zmienić wersję PHP w swoim środowisku hostingowym (Kompletny przewodnik)
Zarządzanie wersją PHP jest jednym z najważniejszych zadań administracyjnych dla każdego właściciela witryny lub dewelopera. Niezależnie od tego, czy ulepszasz się, aby wykorzystać najnowsze ulepszenia wydajności, obniżasz wersję dla kompatybilności starszych aplikacji, czy też łatasz luki w zabezpieczeniach, wiedza na temat dokładnego przełączania wersji PHP w różnych środowiskach hostingowych jest umiejętnością niezbędną. Ten kompleksowy przewodnik przeprowadzi Cię przez każdą dostępną metodę — od graficznego interfejsu cPanel do narzędzi wiersza poleceń na hostingu VPS i serwerach dedykowanych.
Spis treści
- Dlaczego zarządzanie wersją PHP jest ważne
- Zrozumienie wersji PHP i kompatybilności
- Metoda 1: Zmiana wersji PHP za pośrednictwem cPanel (MultiPHP Manager)
- Metoda 2: Zmiana wersji PHP za pośrednictwem .htaccess (Apache)
- Metoda 3: Zmiana wersji PHP za pośrednictwem wiersza poleceń (VPS/Serwery dedykowane)
- Metoda 4: Zmiana wersji PHP za pośrednictwem php.ini
- Jak sprawdzić aktywną wersję PHP
- Typowe błędy po przełączeniu wersji PHP
- Najlepsze praktyki zarządzania wersją PHP
- Podsumowanie
1. Dlaczego zarządzanie wersją PHP jest ważne {#why-it-matters}
PHP obsługuje ponad 77% wszystkich witryn ze znanym językiem po stronie serwera, w tym główne platformy takie jak WordPress, Joomla, Drupal i Magento. Każde główne wydanie PHP wprowadza znaczące zmiany:
- Wzrost wydajności: PHP 8.x jest dramatycznie szybsze niż PHP 5.x lub 7.x, dzięki kompilatorowi JIT (Just-In-Time).
- Łatki bezpieczeństwa: Starsze wersje PHP ostatecznie osiągają koniec życia (EOL) i nie otrzymują już aktualizacji bezpieczeństwa, narażając Twoją witrynę na zagrożenia.
- Kompatybilność aplikacji: Niektóre starsze wtyczki, motywy lub niestandardowe aplikacje zostały napisane dla określonych wersji PHP i mogą się zepsuć w nowszych wydaniach.
- Zgodność hostingu: Wielu dostawców hostingu wymusza minimalne wymagania dotyczące wersji PHP, aby utrzymać standardy bezpieczeństwa serwera.
Brak proaktywnego zarządzania wersją PHP może spowodować uszkodzoną funkcjonalność, naruszenia bezpieczeństwa lub całkowitą niedostępność witryny. Zrozumienie, jak kontrolować to ustawienie — niezależnie od typu hostingu — jest niezbędne dla każdego poważnego administratora sieci.
2. Zrozumienie wersji PHP i kompatybilności {#understanding-versions}
Przed wprowadzeniem jakichkolwiek zmian ważne jest zrozumienie cyklu życia wydania PHP i sposobu strukturyzacji wersji.
Numeracja wersji PHP
PHP podąża za schematem wersjonowania MAJOR.MINOR.PATCH:
| Komponent | Przykład | Znaczenie |
|---|---|---|
| Major | 8 | Znaczące zmiany architektoniczne, możliwe zmiany przełomowe |
| Minor | 8.2 | Nowe funkcje, ulepszenia wstecz kompatybilne |
| Patch | 8.2.10 | Tylko poprawki błędów i łatki bezpieczeństwa |
Cykl życia wsparcia PHP
Każda drobna wersja PHP otrzymuje:
- Aktywne wsparcie przez około 2 lata (poprawki błędów + łatki bezpieczeństwa)
- Wsparcie tylko bezpieczeństwa przez dodatkowy 1 rok
- Koniec życia (EOL) po którym nie są wydawane żadne łatki
Aktualnie obsługiwane wersje PHP (od 2024–2025)
| Wersja PHP | Status | Uwagi |
|---|---|---|
| PHP 8.3 | Aktywne wsparcie | Najnowsze stabilne wydanie |
| PHP 8.2 | Aktywne wsparcie | Rekomendowane dla większości aplikacji |
| PHP 8.1 | Tylko bezpieczeństwo | Nadal szeroko stosowany |
| PHP 8.0 | EOL | Unikaj — brak łatek bezpieczeństwa |
| PHP 7.4 | EOL | Tylko wsparcie starsze |
| PHP 7.3 i poniżej | EOL | Zdecydowanie odradzane |
> Zasada praktyczna: Zawsze uruchamiaj najwyższą wersję PHP, którą oficjalnie obsługuje Twoja aplikacja. Jeśli Twój CMS lub framework obsługuje PHP 8.2, nie ma powodu do uruchamiania PHP 7.4.
3. Metoda 1: Zmiana wersji PHP za pośrednictwem cPanel (MultiPHP Manager) {#cpanel-method}
cPanel jest najszerzej używanym panelem kontroli hostingu i zapewnia dwa wbudowane narzędzia do zarządzania wersją PHP: MultiPHP Manager (na poziomie serwera lub dla domeny) i MultiPHP INI Editor (do dostrajania ustawień PHP). Jeśli używasz VPS z cPanel, oba narzędzia są dostępne.
Krok 1: Zaloguj się do cPanel
- Otwórz przeglądarkę i przejdź do adresu URL logowania cPanel:
https://yourdomain.com:2083 (bezpieczny, rekomendowany)
https://yourdomain.com/cpanelhttps://your-server-ip:2083- Wpisz swoją nazwę użytkownika cPanel i hasło.
- Kliknij Zaloguj się.
Krok 2: Otwórz MultiPHP Manager
- Na pulpicie nawigacyjnym cPanel przewiń do sekcji Oprogramowanie.
- Kliknij na MultiPHP Manager.
> Alternatywa: Niektóre konfiguracje cPanel oznaczają to jako Wybierz wersję PHP, Konfiguracja PHP lub Selektor PHP (ten ostatni jest powszechny w hostingu współdzielonym opartym na CloudLinux). Interfejs może się nieznacznie różnić, ale proces jest taki sam.
Krok 3: Wybierz domenę i wersję PHP
W interfejsie MultiPHP Manager:
- Zobaczysz listę wszystkich domen i poddomen hostowanych na Twoim koncie.
- Zaznacz pole wyboru obok domeny, którą chcesz zmodyfikować.
- Z listy rozwijanej Wersja PHP u góry strony wybierz żądaną wersję PHP (np.
PHP 8.2). - Kliknij Zastosuj.
> Ważne: Jeśli masz konto hostingu współdzielonego, dostępne wersje PHP są określane przez dostawcę hostingu. Jeśli potrzebujesz wersji, która nie jest wymieniona, skontaktuj się z zespołem wsparcia hosta lub rozważ uaktualnienie do planu hostingu VPS, gdzie masz pełną kontrolę nad zainstalowanymi wersjami PHP.
Krok 4: (Opcjonalnie) Dostosuj ustawienia PHP za pośrednictwem MultiPHP INI Editor
Po przełączeniu wersji może być konieczne dostosowanie wartości konfiguracji PHP:
- Wróć do sekcji Oprogramowanie w cPanel.
- Kliknij MultiPHP INI Editor.
- Wybierz domenę z listy rozwijanej.
- Zmodyfikuj wartości takie jak:
memory_limit (np. 256M)
upload_max_filesize (np. 64M)
max_execution_time (np. 300)
post_max_size (np. 64M)
Kliknij Zastosuj, aby zapisać zmiany.
Krok 5: Sprawdź zmianę
Utwórz plik testowy, aby potwierdzić aktywną wersję PHP (pełne instrukcje znajdują się w sekcji 7).
4. Metoda 2: Zmiana wersji PHP za pośrednictwem .htaccess (Apache) {#htaccess-method}
Jeśli Twoje środowisko hostingowe uruchamia Apache, ale nie zapewnia graficznego selektora PHP, możesz kontrolować wersję PHP bezpośrednio za pośrednictwem pliku .htaccess. Ta metoda jest szczególnie przydatna na planach hostingu współdzielonego, gdzie dostęp na poziomie serwera jest ograniczony.
Jak to działa
Apache używa handlerów do określenia sposobu przetwarzania plików .php. Określając niestandardowy handler w .htaccess, instruujesz Apache, aby używał określonej wersji PHP dla Twojej witryny.
Krok 1: Uzyskaj dostęp do pliku .htaccess
Możesz edytować .htaccess za pośrednictwem:
Menedżer plików cPanel: Przejdź do public_html, znajdź .htaccess, kliknij prawym przyciskiem myszy i wybierz Edytuj.
Klient FTP/SFTP: Połącz się z serwerem i przejdź do katalogu głównego witryny (zwykle public_html lub www).
Wiersz poleceń SSH: nano /home/username/public_html/.htaccess> Uwaga: .htaccess to plik ukryty. W kliencie FTP włącz „Pokaż pliki ukryte”. W Menedżerze plików cPanel zaznacz „Pokaż pliki ukryte (dotfiles)” w ustawieniach w prawym górnym rogu.
Krok 2: Dodaj dyrektywę handlera PHP
Dodaj jedną z poniższych linii do pliku .htaccess, w zależności od konwencji nazewnictwa handlera PHP na serwerze:
Dla PHP 8.2:
AddHandler application/x-httpd-php82 .phpDla PHP 8.1:
AddHandler application/x-httpd-php81 .phpDla PHP 7.4 (starsze):
AddHandler application/x-httpd-php74 .phpAlternatywna składnia (używana na niektórych hostach):
# Using suPHP or FastCGI
Action php-cgi /cgi-bin/php82
AddHandler php-cgi .php> Ważne: Dokładna nazwa handlera (x-httpd-php82, x-httpd-php81 itd.) zależy od sposobu, w jaki dostawca hostingu skonfigurował PHP na swoich serwerach. Jeśli powyższe nie działa, sprawdź dokumentację hosta lub skontaktuj się z pomocą techniczną, aby uzyskać prawidłowe nazwy handlerów.
Krok 3: Zapisz i przetestuj
Zapisz plik .htaccess i przetestuj witrynę. Jeśli zobaczysz błąd 500 wewnętrznego serwera, nazwa handlera jest prawdopodobnie niepoprawna — usuń linię i spróbuj alternatywnej składni.
5. Metoda 3: Zmiana wersji PHP za pośrednictwem wiersza poleceń (VPS/Serwery dedykowane) {#cli-method}
Jeśli zarządzasz własnymi serwerami dedykowanymi lub VPS z dostępem root, masz pełną kontrolę nad instalacją PHP i przełączaniem wersji. To jest najmocniejsza i najbardziej elastyczna metoda.
Wymagania wstępne
- Dostęp root lub sudo do serwera
- Klient SSH (Terminal na macOS/Linux, PuTTY lub Windows Terminal na Windows)
- Podstawowa znajomość operacji wiersza poleceń Linux
Ubuntu / Debian — Korzystanie z update-alternatives
Systemy oparte na Ubuntu i Debian używają systemu update-alternatives do zarządzania wieloma wersjami PHP jednocześnie.
#### Krok 1: Dodaj repozytorium PHP Ondřeja Surého
Ten PPA zapewnia wiele wersji PHP dla Ubuntu/Debian:
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update#### Krok 2: Zainstaluj żądaną wersję 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#### Krok 3: Przełącz domyślną wersję 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 phpInteraktywny selektor wyświetli coś w rodzaju:
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:Wpisz numer odpowiadający żądanej wersji i naciśnij Enter.
#### Krok 4: Przełącz wersję PHP dla 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#### Krok 5: Przełącz wersję PHP dla Nginx (PHP-FPM)
W przypadku Nginx PHP jest obsługiwany za pośrednictwem PHP-FPM. Zaktualizuj blok serwera Nginx, aby wskazywał na prawidłowe gniazdo 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;
}Następnie uruchom ponownie zarówno PHP-FPM, jak i Nginx:
sudo systemctl restart php8.2-fpm
sudo systemctl restart nginxCentOS / RHEL / AlmaLinux / Rocky Linux — Korzystanie z repozytorium SCL lub Remi
#### Opcja A: Korzystanie z 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> Uwaga: Zmiany SCL są specyficzne dla sesji. Aby uczynić je trwałymi dla użytkownika, dodaj source /opt/rh/rh-php74/enable do ~/.bashrc.
#### Opcja B: Korzystanie z repozytorium 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 --versionPrzełączanie PHP dla poszczególnych witryn (wersja PHP dla każdej witryny)
Na serwerach obsługujących wiele witryn internetowych często potrzebujesz różnych wersji PHP dla każdej witryny. Najczystszym podejściem jest uruchamianie wielu pul 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-fpmNastępnie skonfiguruj każdy wirtualny host Nginx, aby używał innego gniazda 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. Metoda 4: Zmiana wersji PHP za pośrednictwem php.ini {#phpini-method}
W niektórych środowiskach hostingowych, szczególnie tych używających handlerów PHP CGI lub FastCGI, możesz wpłynąć na zachowanie PHP — a czasami nawet na wersję — za pośrednictwem niestandardowego pliku php.ini umieszczonego w katalogu głównym witryny.
Tworzenie niestandardowego php.ini
- Utwórz plik o nazwie
php.iniw katalogu głównym witryny (public_html). - Dodaj dyrektywy konfiguracji:
; 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"> Uwaga: Ta metoda kontroluje ustawienia PHP, niekoniecznie wersję PHP. Wybór wersji za pośrednictwem php.ini jest możliwy tylko w określonych konfiguracjach hostingu. Aby uzyskać pełną kontrolę wersji, użyj metod cPanel, .htaccess lub wiersza poleceń opisanych powyżej.
7. Jak sprawdzić aktywną wersję PHP {#verify}
Po wprowadzeniu jakichkolwiek zmian zawsze sprawdź, czy prawidłowa wersja PHP jest aktywna. Istnieje kilka sposobów, aby to zrobić:
Metoda A: Utwórz stronę testową phpinfo()
- Utwórz nowy plik o nazwie
phpinfo.phpw katalogu głównym witryny (public_html). - Dodaj następującą zawartość:
<?php
phpinfo();
?>- Przejdź do
https://yourdomain.com/phpinfo.phpw przeglądarce. - Strona wyświetli kompleksowe informacje o konfiguracji PHP. Wersja PHP jest wyświetlana na samej górze.
> Ostrzeżenie bezpieczeństwa: Usuń ten plik natychmiast po testowaniu. Dane wyjściowe phpinfo() ujawniają wrażliwe szczegóły konfiguracji serwera, które mogą pomóc atakującym.
Metoda B: Sprawdź za pośrednictwem wiersza poleceń (SSH)
php --version
# or
php -vOczekiwane dane wyjściowe:
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 TechnologiesMetoda C: Sprawdź za pośrednictwem prostego skryptu PHP
Aby uzyskać mniej szczegółową kontrolę, użyj tego minimalnego skryptu zamiast pełnego phpinfo():
<?php
echo 'PHP Version: ' . PHP_VERSION;
echo '<br>PHP Major Version: ' . PHP_MAJOR_VERSION;
echo '<br>PHP Minor Version: ' . PHP_MINOR_VERSION;
?>Metoda D: Sprawdź za pośrednictwem panelu administracyjnego WordPress (dla witryn WordPress)
Na pulpicie nawigacyjnym WordPress:
- Przejdź do Narzędzia → Kondycja witryny.
- Kliknij kartę Informacje.
- Rozwiń sekcję Serwer.
- Poszukaj wersji PHP.
8. Typowe błędy po przełączeniu wersji PHP {#common-errors}
Przełączenie wersji PHP może czasami powodować problemy. Oto najczęstsze problemy i sposoby ich rozwiązania:
Błąd 1: Biały ekran śmierci (WSOD) lub pusta strona
Przyczyna: Wtyczka, motyw lub niestandardowy kod używa składni lub funkcji, które są niezgodne z nową wersją PHP.
Rozwiązanie:
- Włącz tryb debugowania WordPress, dodając do
wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);- Sprawdź
/wp-content/debug.logw poszukiwaniu konkretnych komunikatów o błędach. - Dezaktywuj wszystkie wtyczki i przełącz się na motyw domyślny, aby wyizolować problem.
Błąd 2: Błąd 500 wewnętrznego serwera
Przyczyna: Często spowodowany nieprawidłowym handlerem PHP w .htaccess lub rozszerzeniem PHP, które nie jest zainstalowane dla nowej wersji.
Rozwiązanie:
- Usuń lub popraw dyrektywę
AddHandlerw.htaccess. - Sprawdź dziennik błędów serwera:
tail -f /var/log/apache2/error.loglubtail -f /var/log/nginx/error.log. - Upewnij się, że wymagane rozszerzenia PHP są zainstalowane dla nowej wersji.
Błąd 3: „Wywołanie niezdefiniowanej funkcji” lub „Klasa nie znaleziona”
Przyczyna: Rozszerzenie PHP wymagane przez aplikację (np. php-gd, php-mbstring, php-xml) nie jest zainstalowane dla nowej wersji PHP.
Rozwiązanie:
# 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 nginxBłąd 4: Ostrzeżenia dotyczące przestarzałych funkcji
Przyczyna: Twój kod używa funkcji, które zostały wycofane w starszych wersjach PHP i usunięte w nowszych (np. funkcje mysql_* usunięte w PHP 7.0).
Rozwiązanie:
- Zaktualizuj kod lub wtyczki, aby używać nowoczesnych odpowiedników (np.
mysqli_*lub PDO). - Jeśli natychmiastowe zmiany kodu nie są możliwe, rozważ pozostanie na kompatybilnej wersji PHP na chwilę, podczas gdy planujesz uaktualnienie.
