The PHP 7.4 is the latest version available for installation on Debian 9 Stretch Linux machine. Ubuntu users can visit our tutorial for installing PHP 7 on Ubuntu. This tutorial is for the Debian 9 Stretch users to install PHP 7.4, 7.3, 7.2, 7.1 or 5.6 on their system.
First of all, you need to complete the prerequisites step and then go forward to install the PHP version of your choice or requirements.
Prerequisites
Login to your Debian 9 system using shell access. For remote systems connect with SSH. Windows users can use Putty or other alternatives applications for SSH connection.
ssh root@debian9
Run below commands to upgrade the current packages to the latest version.
sudo apt update sudo apt upgrade
Let’s execute the following commands to install the required packages first on your system. Then import packages signing key. After that configure PPA for the PHP packages on your system.
sudo apt install ca-certificates apt-transport-https wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add - echo "deb https://packages.sury.org/php/ stretch main" | sudo tee /etc/apt/sources.list.d/php.list
Now use one of the below options to install PHP of your requirements.
Installing PHP 7.4
You can also install the latest PHP version on your system. Run the following commands to install PHP 7.4 on Debian 9.
sudo apt update sudo apt install php7.4
Also install required php modules.
sudo apt install php7.4-cli php7.4-common php7.4-curl php7.4-mbstring php7.4-mysql php7.4-xml
Installing PHP 7.3
You can also install the latest PHP version on your system. Run the following commands to install PHP 7.3 on Debian 9.
sudo apt update sudo apt install php7.3
Also install required php modules.
sudo apt install php7.3-cli php7.3-common php7.3-curl php7.3-mbstring php7.3-mysql php7.3-xml
Installing PHP 7.2
You can also install the latest PHP version on your system. Run the following commands to install PHP 7.2 on Debian 9.
sudo apt update sudo apt install php7.2
Also install required php modules.
sudo apt install php7.2-cli php7.2-common php7.2-curl php7.2-mbstring php7.2-mysql php7.2-xml
Installing PHP 7.1
If your application has the specific requirement of PHP 7.1, You can use the following commands for installing PHP 7.1 on Debian 9 Stretch system.
sudo apt update sudo apt install php7.1
Also, install the required PHP modules as per your requirements. Here is a list of some frequently used modules.
sudo apt install php7.1-cli php7.1-common php7.1-curl php7.1-mbstring php7.1-mysql php7.1-xml
Installing PHP 5.6
Execute the following commands for installing PHP 5.6 on your Debian 9 Stretch system.
sudo apt update sudo apt install php5.6
Also install required php modules.
sudo apt install php5.6-cli php5.6-common php5.6-curl php5.6-mbstring php5.6-mysql php5.6-xml
34 Comments
No PHP 5.6 anymore at https://packages.sury.org/php/ stretch main
Hello Rahul,
Is it possible to install PHP 5.1 on Debian 9?
Thanks RAHUL!
Works fine on DEEPIN 15.11
Don’t forget change PHP version after:
update-alternatives: using /usr/bin/php7.4 <– php version installed.
This method installs command line php not the apache server parser. Your php script will still be running old version. Just run phpinfo() and see it by your self.
thank you very much for this instruction. Save me many time.
Great! From php 7.0 to 7.3, needed to Laravel 5.8, works for me on Debian 9.
This answer is not in StackOverflow.
Something so simple like adding in source.list the php sources, allows you to download the php7.3-curl
I have the same problem as some others:
# apt install php7.3
Reading package lists… Done
Building dependency tree
Reading state information… Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
php7.3 : Depends: libapache2-mod-php7.3 but it is not going to be installed or
php7.3-fpm but it is not going to be installed or
php7.3-cgi but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
I currently have PHP 7.0 installed on my server, I tried to remove it but this does not help.
Thank you again, great tutorial!
Do not forget install apache module!
For 7.1:
sudo apt-get install libapache2-mod-php7.1
Thanks alot! you saved me!
# apt install php7.3-cli
Reading package lists… Done
Building dependency tree
Reading state information… Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
php7.3-cli : Depends: libpcre2-8-0 (>= 10.32) but 10.22-3 is to be installed
E: Unable to correct problems, you have held broken packages.
Hi i try for long time to install php5.6 on my debian 5.6 bur when i execut this command.
” sudo apt install php5.6″ =>
jawad@vps591916:~$ sudo apt install php5.6
Reading package lists… Done
Building dependency tree
Reading state information… Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
php5.6 : Depends: libapache2-mod-php5.6 but it is not going to be installed or
php5.6-fpm but it is not going to be installed or
php5.6-cgi but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Help me please !!!
Instruction desn’t work for me in the stretch:
root@d7b02380d29b:/workdir# wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add –
OK
root@d7b02380d29b:/workdir# echo “deb https://packages.sury.org/php/ stretch main” | tee /etc/apt/sources.list.d/php.list
deb https://packages.sury.org/php/ stretch main
root@d7b02380d29b:/workdir# apt update -y
Hit:1 http://security.debian.org/debian-security stretch/updates InRelease
Ign:2 http://deb.debian.org/debian stretch InRelease
Hit:3 http://security.debian.org/debian-security buster/updates InRelease
Hit:4 http://deb.debian.org/debian stretch-updates InRelease
Hit:5 http://deb.debian.org/debian buster InRelease
Hit:6 http://deb.debian.org/debian buster-updates InRelease
Hit:7 http://deb.debian.org/debian stretch Release
Hit:8 https://packages.sury.org/php stretch InRelease
Reading package lists… Done
Building dependency tree
Reading state information… Done
11 packages can be upgraded. Run ‘apt list –upgradable’ to see them.
root@d7b02380d29b:/workdir# apt install php7.3
Reading package lists… Done
Building dependency tree
Reading state information… Done
Package php7.3 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package ‘php7.3’ has no installation candidate
Hi Alex, I have checked again and PHP 7.3 packages are available in Apt repository. See screenshot: https://www.screencast.com/t/c36xONg6N
hello bro edit your sources manually run this
“sudo apt edit-sources”
it should open the nano with a few lines in it
just add the following to it
“deb https://packages.sury.org/php/ stretch main”
Installing PHP 7.3
You can also install the Latest PHP version on your system. Run the following commands to install PHP 7.2 on Debian 9.
Check this please
Thanks Charlz, Updated tutorial
Hey! You have a typo here:
apt install php7.1-cli php7.1-common php7.1-curlphp7.1-mbstring php7.1-mysql php7.1-xml
There must be an space after *curl*
Thanks!
Thank you so much Marc
Thanks a lot.
thanks, worked perfect !
Helped a lot !! thanks
In Debian 9 this
echo “deb https://packages.sury.org/php/ stretch main” | sudo tee /etc/sources.list.d/php.list
should be
echo “deb https://packages.sury.org/php/ stretch main” | sudo tee /etc/apt/sources.list.d/php.list
sources.list.d directory path changed In Debian 9
Thank you so much
dpkg: erro ao processar o pacote nginx (–configure):
problemas de dependência – deixando desconfigurado
Erros foram encontrados durante o processamento de:
nginx-full
nginx
hi, cam u help me, how cam resovel this problen
Thanks a lot! I spent a lot of time building from source of old packages without success and you saved me! 🙂
replaces “sudo echo “deb https://packages.sury.org/php/ stretch main” | tee /etc/apt/sources.list.d/php.list”
by “sudo echo “deb https://packages.sury.org/php/ stretch main” | sudo tee /etc/apt/sources.list.d/php.list” 🙂
Thanks Julien, Command is updated now correctly.
No need to be root to use echo, I use
echo “deb https://packages.sury.org/php/ stretch main” | sudo tee /etc/apt/sources.list.d/php.list
Do run anything as root if you don”t need it ! 😉
Thanks
Packages are missing 🙁
php7.2-fpm
php7.2-cgi
php7.2-common
Hi Temek,
php7.2-common is included in the command. FPM and CGI packages are optional and install only on the requirement, That’s why I didn’t include them with command.
Thanks, Working fine on Debian 9.