Aby zainstalować PHP 5 i PHP 7 na jednym serwerze Ubuntu i korzystać z obu wersji równolegle, najlepiej użyć repozytorium Ondřej Surý i konfiguracji poprzez PHP-FPM oraz Apache (lub Nginx). Poniżej znajdziesz szczegółowy poradnik krok po kroku.
1. Wstęp – Założenia i wymagania
- Serwer z Ubuntu (najlepiej wersja LTS).
- Uprawnienia roota lub konto w sudoers.
- Zakładamy, że Twoja strona WWW będzie używać serwera Apache (przykład można dostosować do Nginx).
- Chcesz mieć możliwość korzystania z różnych wersji PHP w różnych katalogach lub dla różnych wirtualnych hostów.
2. Instalacja repozytorium PHP
Domyślne repozytoria Ubuntu nie pozwalają na wielowersyjną instalację PHP, dlatego dodaj repozytorium Ondřej Surý:
sudo apt update sudo apt install -y software-properties-common ca-certificates lsb-release apt-transport-https sudo add-apt-repository ppa:ondrej/php sudo apt update
3. Instalacja kilku wersji PHP
Możesz instalować różne wersje PHP jako osobne pakiety:
sudo apt install php5.6 php5.6-fpm sudo apt install php7.4 php7.4-fpm
Wszystkie wersje możesz sprawdzić poleceniem apt search php
lub na stronie repozytorium. Instaluj także potrzebne rozszerzenia (np. php5.6-mysql
, php7.4-mysql
).
4. Konfiguracja Apache (z PHP-FPM)
Ważne – Instalacja PHP-FPM dla każdej wersji pozwala kierować ruch wybranego vhosta lub katalogu na odpowiednią wersję PHP.
a) Włącz proxy i proxy_fcgi
sudo a2enmod proxy_fcgi setenvif sudo a2enconf php5.6-fpm sudo a2enconf php7.4-fpm
b) Tworzenie vhostów pod konkretne wersje PHP
Przykład dla apache2 – plik konfiguracyjny jednego z vhostów (np. /etc/apache2/sites-available/php56.example.conf
):
<VirtualHost *:80> ServerName php56.example.local DocumentRoot /var/www/php56 <FilesMatch \.php$> SetHandler "proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost/" </FilesMatch> </VirtualHost>
Analogicznie, dla PHP 7.4 zmień php5.6-fpm.sock
na php7.4-fpm.sock
i ustaw inny katalog DocumentRoot oraz ServerName.
Włącz nowy vhost i restartuj serwer:
sudo a2ensite php56.example.conf sudo systemctl reload apache2
5. Konfiguracja NGINX (opcjonalnie)
Dla Nginx w sekcji server
ustaw:
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php5.6-fpm.sock; }
Odnośnik do innego socketa dla innej wersji PHP.
6. Testowanie i sprawdzanie wersji
W katalogu głównym każdego hosta stwórz plik info.php
:
<?php phpinfo(); ?>
Odwiedź adres w przeglądar