π PHP Multiple Versions (7.4 β 8.4) with Apache on Ubuntu
1οΈβ£ Add PHP PPA
sudo apt update
sudo apt install -y software-properties-common ca-certificates lsb-release apt-transport-https
sudo add-apt-repository -y ppa:ondrej/php
sudo apt update
2οΈβ£ Install PHP Versions
# PHP 7.4
sudo apt install -y php7.4 php7.4-cli php7.4-fpm
# PHP 8.0
sudo apt install -y php8.0 php8.0-cli php8.0-fpm
# PHP 8.1
sudo apt install -y php8.1 php8.1-cli php8.1-fpm
# PHP 8.2
sudo apt install -y php8.2 php8.2-cli php8.2-fpm
# PHP 8.3
sudo apt install -y php8.3 php8.3-cli php8.3-fpm
# PHP 8.4
sudo apt install -y php8.4 php8.4-cli php8.4-fpm
3οΈβ£ Install Important Extensions
# Replace X.X with version (7.4, 8.0, 8.1, 8.2, 8.3, 8.4)
sudo apt install -y phpX.X-cli phpX.X-fpm phpX.X-mysql phpX.X-xml phpX.X-curl phpX.X-mbstring phpX.X-zip phpX.X-bcmath phpX.X-gd phpX.X-intl phpX.X-readline phpX.X-soap phpX.X-opcache phpX.X-dev phpX.X-imagick phpX.X-pgsql phpX.X-sqlite3
π Covers Laravel, Symfony, WordPress, Drupal, Magento, APIs, image processing, DB drivers, and performance.
4οΈβ£ Check Installed Versions
php -v # Current CLI version
update-alternatives --list php # All installed CLI versions
systemctl list-units | grep php # Running PHP-FPM services
php -m # Installed extensions
5οΈβ£ Switch PHP (CLI)
Interactive:
sudo update-alternatives --config php
Direct:
sudo update-alternatives --set php /usr/bin/php8.3
Verify:
php -v
6οΈβ£ Switch PHP (Apache FPM)
Enable/disable PHP-FPM
sudo systemctl stop php7.4-fpm
sudo systemctl enable --now php8.3-fpm
Enable Apache modules/config
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.3-fpm
sudo a2disconf php7.4-fpm
sudo systemctl reload apache2
VirtualHost Example
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
</FilesMatch>
Reload Apache:
sudo systemctl restart apache2
7οΈβ£ Test PHP
Create /var/www/html/info.php
:
<?php phpinfo();
Open in browser:
http://localhost/info.php
π Quick Reference
- Switch CLI PHP
sudo update-alternatives --config php
- Switch Apache PHP-FPM
sudo systemctl stop php8.0-fpm
sudo systemctl start php8.2-fpm
sudo a2enconf php8.2-fpm
sudo a2disconf php8.0-fpm
sudo systemctl reload apache2
β With this setup, you can:
- Install PHP 7.4 β 8.4
- Enable required extensions
- Switch between versions for CLI & Apache
- Verify with
php -v
andphpinfo()
Top comments (0)