How to switch PHP versions for apache2 and command line?
Why we need to switch PHP versions?
Let’s say we have an older version of PHP installed. We want to upgrade the PHP to the latest version. After the installation, we will end up having two PHP versions. From the command line if we type the following command then it will show us the active PHP version for the command line (PHP CLI):
$ php -v //Output PHP 7.3.3-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Mar 7 2019 20:31:26) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.3, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.3-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
The command line php version will automatically be the latest version installed. But if it does not activate the latest PHP then we can use the following command to activate the latest version of PHP:
$ sudo update-alternatives --config php // Sample output Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/php7.3 72 auto mode 1 /usr/bin/php5.6 56 manual mode 2 /usr/bin/php7.0 70 manual mode 3 /usr/bin/php7.1 71 manual mode 4 /usr/bin/php7.2 72 manual mode Pressto keep the current choice[*], or type selection number:
Now if we have apache2 installed, then apache2 will still point to the old version of PHP. You can check the active PHP version used by apache2 using following code in the index.php
file. Then in the browser: http://localhost
phpinfo();
Let say the apache2 is using PHP version 7.0 and we want to upgrade to the PHP version 7.3. We can easily do that using following commands:
From PHP 7.0 => PHP 7.3
$ sudo a2dismod php7.0 $ sudo a2enmod php7.3 $ sudo service apache2 restart
After switching the new version if we find incompatibility, then we can easily switch back to the old version using following command:
From PHP 7.3 => PHP 7.0
$ sudo a2dismod php7.3 $ sudo a2enmod php7.0 $ sudo service apache2 restart