I am new to using Linux and I broke some php settings while tampering.
If I execute a php script containing: phpinfo();
it shows the php versions as 5.
sudo update-alternatives --set php /usr/bin/php5.6
Please see: Source
From PHP 7.1 => PHP 5.6
sudo update-alternatives --set php /usr/bin/php5.6
From PHP 5.6 => PHP 7.1
sudo update-alternatives --set php /usr/bin/php7.1
You can change the versions as you want.
You can check this tutorial
Regards!!
Just to say, if your server is managed using Plesk (like mine is at the time of searching through this question) then you may not have later PHP versions in /usr/bin
In this case, your PHP versions will be located in /opt/plesk/php
so you can instead use the following command as a super user (run su
first if you're not a super user) to set your PHP CLI version (to 7.3 in this example):
echo "alias php='/opt/plesk/php/7.3/bin/php'" >> ~/.bashrc
Log out and log back in and.... voila!
7.3
in the command to whichever version you would like (in the OP's case this would be 5.6
ls /opt/plesk/php
Source: Plesk Support
Here is more interactive way:
update-alternatives --config php
You'll see the list of all available versions and select one of them
Most answers here manipulate the php-version by using the command
sudo update-alternatives --set ...
While the command is quite useful it's never explained what it does exactly. Here comes the explanation, including backup and some options:
update-alternatives
is displaying or changing symlinks which reside in an alternative direction which is in Ubuntu usually defined as /etc/alternatives
but which could be changed too.update-alternatives
can be shown with the command update-alternatives --help
, a deeper explanation can be shown with man update-alternatives
.update-alternatives
is primary changing symlinks in a special folder, the content of that folder can be shown with common commands too, following all items starting with php
are shown: $ ls -al /etc/alternatives/php* lrwxrwxrwx 1 root root 15 Jan 19 02:58 /etc/alternatives/php -> /usr/bin/php7.2 lrwxrwxrwx 1 root root 31 Jan 19 02:58 /etc/alternatives/php.1.gz -> /usr/share/man/man1/php7.2.1.gz lrwxrwxrwx 1 root root 19 Jan 19 03:00 /etc/alternatives/php-cgi -> /usr/bin/php-cgi7.2 lrwxrwxrwx 1 root root 35 Jan 19 03:00 /etc/alternatives/php-cgi.1.gz -> /usr/share/man/man1/php-cgi7.2.1.gz lrwxrwxrwx 1 root root 23 Jan 19 03:00 /etc/alternatives/php-cgi-bin -> /usr/lib/cgi-bin/php7.2
update-alternatives
use this command: $ update-alternatives --list php /usr/bin/php7.0 /usr/bin/php7.2
$ update-alternatives --display php php - auto mode link best version is /usr/bin/php7.2 link currently points to /usr/bin/php7.2 link php is /usr/bin/php slave php.1.gz is /usr/share/man/man1/php.1.gz /usr/bin/php7.0 - priority 70 slave php.1.gz: /usr/share/man/man1/php7.0.1.gz /usr/bin/php7.2 - priority 72 slave php.1.gz: /usr/share/man/man1/php7.2.1.gz
Finally we still want to know which php-versions we can link. The following command shows a list of the currently available php-versions in /usr/bin/
:
$ ls -al /usr/bin/php* lrwxrwxrwx 1 root root 21 Jan 1 19:47 /usr/bin/php -> /etc/alternatives/php -rwxr-xr-x 1 root root 4385840 Apr 5 18:13 /usr/bin/php7.0 -rwxr-xr-x 1 root root 4875488 Apr 5 18:10 /usr/bin/php7.2 lrwxrwxrwx 1 root root 25 Jan 1 19:47 /usr/bin/php-cgi -> /etc/alternatives/php-cgi -rwxr-xr-x 1 root root 4279672 Apr 5 18:13 /usr/bin/php-cgi7.0 -rwxr-xr-x 1 root root 4769272 Apr 5 18:10 /usr/bin/php-cgi7.2 -rwxr-xr-x 1 root root 663 Feb 29 2016 /usr/bin/phpunit
alternatives-php.txt
to your needs):$ echo "command: update-alternatives --list php" > ~/Desktop/alternatives-php.txt $ update-alternatives --display php >> ~/Desktop/alternatives-php.txt $ echo "command: update-alternatives --display php" >> ~/Desktop/alternatives-php.txt $ update-alternatives --display php >> ~/Desktop/alternatives-php.txt
if you like you still can add the result of the command
ls
like shown above:$ echo "command: ls -al /etc/alternatives/php*" >> ~/Desktop/alternatives-php.txt $ ls -al /etc/alternatives/php* >> ~/Desktop/alternatives-php.txt
... and the available PHP-versions:
$ echo "command: ls -al /usr/bin/php*" >> ~/Desktop/alternatives-php.txt $ ls -al /usr/bin/php* >> ~/Desktop/alternatives-php.txt
man
-documents the list in /etc/alternatives/php*/
includes 3 lines:$ ls -al /etc/alternatives/php* lrwxrwxrwx 1 root root 15 Jan 19 02:58 /etc/alternatives/php -> /usr/bin/php7.2 lrwxrwxrwx 1 root root 19 Jan 19 03:00 /etc/alternatives/php-cgi -> /usr/bin/php-cgi7.2 lrwxrwxrwx 1 root root 23 Jan 19 03:00 /etc/alternatives/php-cgi-bin -> /usr/lib/cgi-bin/php7.2
cli
, web
and cgi
could be configured differently./etc/alternatives
and cli
(commandline) is usually not using the cgi-version or cgi-configuration. So it can be assumed that changing only the symlink for php
will work for commandline, change of php-cgi
and php-cgi-bin
is probably not required.
Usually the most recent version is linked by default, so the command below is using an older version taken from the list in /usr/bin/
:$ sudo update-alternatives --set php /usr/bin/php7.0 update-alternatives: using /usr/bin/php7.0 to provide /usr/bin/php (php) in manual mode
Checking the change:
$: php -v PHP 7.0.29-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Apr 5 2018 08:34:50) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.0.29-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2017, by Zend Technologies
The change was accepted and the used version is an older one now.
$: man php ... [SCROLL DOWN] VERSION INFORMATION This manpage describes php, version 7.0.29-1+ubuntu16.04.1+deb.sury.org+1. COPYRIGHT ...
This means the PHP-version is consistent with the man-page and the command man php
returns the right descriptions for the current php-version and no manual adjustments concerning the man-page have been required.
check what you have before changing
php -v
change everything to php 7.2
sudo update-alternatives --set php /usr/bin/php7.2
sudo update-alternatives --set phar /usr/bin/phar7.2
sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.2
sudo update-alternatives --set phpize /usr/bin/phpize7.2
sudo update-alternatives --set php-config /usr/bin/php-config7.2