In this guide, we will show you how you can install the latest versions of PHP without upgrading your version of Raspberry Pi OS.
PHP is the building block for a vast majority of web applications and we use it for several of our Raspberry Pi projects.
Sometimes developers may update an application to use a newer version of PHP that is not available on your system. To get around this, you can add a third-party repository that provides both older and more recent versions of PHP.
Ondřej Surý maintains the repository for these PHP packages that we are adding and is a very well respected contributor to the PHP community.
These repositories are available for both Debian and Ubuntu systems. They have become one of the primary ways for getting new and old versions of PHP when they are not available.
Equipment
Below is a list of the equipment you may need when adding this third-party PHP repository on your Raspberry Pi.
Recommended
- Raspberry Pi ( Amazon )
- Micro SD Card ( Amazon )
- Power Supply ( Amazon )
- Ethernet Cable ( Amazon ) or Wi-Fi ( Amazon )
Optional
This tutorial was tested on a Raspberry Pi 400 running the latest version of Raspberry Pi OS Bullseye.
Adding the 3rd Party PHP Repository
The process of adding this repository to your Raspberry Pi is a straightforward one.
By the end of the next few steps, you will be able to install most versions of PHP to your Raspberry Pi.
These steps will differ slightly depending on whether you run Ubuntu on your Pi or another Debian-based operating system like Raspberry Pi.
Adding the Repository on Raspberry Pi OS
Adding a new repository within Raspberry Pi OS is a straightforward process but is a process that is required to be done from the terminal.
We need to download the GPG key and add the repository as a source for the package manager.
1. Before proceeding we need to ensure the “lsb-release
” package is installed on Raspberry Pi OS. This package allows us to quickly get the details we need when setting up the PHP repository.
For our first step we need to update the package list by using the command below.
sudo apt update
2. Once the package list has finished updating, run the following command to install the “lsb-release
” package.
sudo apt install lsb-release
3. To use any third-party repository within Raspberry Pi OS / Debian, you need to provide its GPG key.
This key is used to verify that the packages you are installing do, in fact, come from that repository.
We can download the GPG key for this PHP repository to our Raspberry Pi using the following command.
curl https://packages.sury.org/php/apt.gpg | sudo tee /usr/share/keyrings/suryphp-archive-keyring.gpg >/dev/null
4. Once the key has been saved to your Raspberry Pi, we can create a new source file that points to the repository.
Use the following one-liner to create this source file with the link to the repository.
echo "deb [signed-by=/usr/share/keyrings/suryphp-archive-keyring.gpg] https://packages.sury.org/php/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
Within this line, you can see that we point to the GPG key that we saved earlier. The “signed-by
” text tells APT that it should verify the contents of this repository against the provided key.
5. Since we made changes to the APT package sources, we must perform an update of the package lists.
By running an update, we are requesting new package lists from all of the sources. This will make APT aware of the packages being provided by our new PHP repository.
sudo apt update
6. Once the update completes, you can now download older and newer versions of PHP.
In the case of Raspberry Pi OS Bullseye, this means you can gain access to no longer supported versions of PHP such as 7.3. Alternatively, if you are using Raspberry Pi OS Buster, you can access newer versions of PHP, such as PHP 8.1.
Adding the Repository on Ubuntu
The PHP repository that we are using requires a slightly different process for Ubuntu-based operating systems.
Within Ubuntu, they have a tool called “add-apt-repository
” that allows you to easily add a new source like the one we are adding in the next few steps.
1. On your Ubuntu-based system, all you need to do to add this new repository is run the following command.
This tool will handle acquiring the GPG keys and adding the repository to the APT package manager.
sudo apt-add-repository ppa:ondrej/php
2. Once the repository has been added, you will need to perform an update of the package list.
The apt package manager will retrieve a list of packages available from the new repository during this update process.
sudo apt update
Installing PHP 8.1 on a Raspberry Pi
To show you that this repository is working, we will be installing PHP 8.1 to our Raspberry Pi. This version of PHP isn’t available in Bullseye so this will only work if this repository has been added to the sources list.
1. To test this, let us install the CLI version of PHP 8.1 to our Raspberry Pi.
You can install this to the device by running the following command within the terminal.
sudo apt install php8.1-cli
2. If you see no errors, then you have successfully installed PHP 8.1 on your Raspberry Pi. We can verify that this is working by running a tiny PHP script.
Start by creating this simple PHP script by using the following command within the terminal.
echo "<?php echo 'Hello World';" > test.php
This script is super simple and will echo the string “Hello World” to the command line when it is executed.
3. With this script created, you can use PHP 8.1 to run it by using the following command on your device.
php8.1 test.php
If PHP 8.1 has successfully installed to your Pi, you should now see the text “Hello World
” appear in the terminal.
Conclusion
Installing versions of PHP that aren’t generally available on your version of Raspberry Pi OS is a relatively straightforward process.
Thanks to the package repository provided by Ondřej Surý, you can gain access to versions of PHP as old as 5.6, as well as the latest releases that might only be in beta.
If you have had any issues installing your required PHP version, feel free to leave a comment below.
With the repository added to your Pi, be sure to check out some of our excellent PHP-driven projects, such as our Nextcloud guide or our Joomla tutorial.
Hi Emmet,
Could you also give us the necessary steps to configure our existing apache installation to then use the new version of php?
I am currently running a LAMP server on my Raspberry Pi 4B 8GB and am hosting a personal WordPress site. Some of the plugins require PHP version 8.0 or above for greater performance and security. I’d like to upgrade but I am afraid it will break my apache installation.
Any help would be greatly appreciated.
Thank you,
Pino
Hey Pino,
That is actually a solid idea and I’ll try and get some time to update the guide with the steps for doing steps.
With Apache you will need to use the “a2enmod” and “a2dismod” commands to switch versions of PHP.
1. Start by getting your current PHP Version.
You are after something like PHP 7.4 or similar.
2. Next use the “a2dismod” to disable that version of PHP. Swap out the version with the one you got in the previous step.
3. After disabling it you can now enable the new version of PHP.
4. For these changes to take effect you will need to restart Apache.
5. If things break, just flip the steps around and return back to your original version of PHP.
Hopefully this helps you out. Please let me know if you need any more assistance.
Cheers,
Emmet
Trying to install OpenCart 4.0 for development that requires php 8.0+
I followed the upgrade tut twice, this is the result after the second attempt:
pi@raspberrypi:~ $ sudo apt install php8.1-cli
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
php8.1-cli is already the newest version (8.1.11-1+0~20220929.27+debian11~1.gbpe414ce).
Yet phpinfo(); returns this: PHP Version 7.4.30
So I checked the Pi again and get this:
i@raspberrypi:~ $ sudo php –version
PHP 8.1.11 (cli) (built: Sep 29 2022 22:17:15) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.11, Copyright (c) Zend Technologies
with Zend OPcache v8.1.11, Copyright (c), by Zend Technologies
So I try to do the OpenCart install again:
PHP8+ Required
Cant seem to get it Pi says PHP Version 8.1.11 yet browser says PHP Version 7.4.30. I did reboots on everything several times, this is just bizarre any ideas?
Hi Blnukem,
It looks like you have PHP 7.4 running alongside PHP 8.1. You will need to install all of the PHP 8.1 packages you require and configure your web server to utilize it.
Cheers,
Emmet
Hi,
I go to execute step 2 after the first step for Raspberry Pi OS (running Raspberry Pi OS) and I get an error dealing with ls-release not being installed.
You might want to put an instruction or notice that notifies the reader to install ls-release before attempting this or apt install won’t work until they delete the install list for the sury repository and install ls-release and add the repo back in.
Hi E,
That is strange that the “lsb-release” package isn’t installed by default on new versions of Raspberry Pi OS.
Thank you for letting me know about this, I have updated the steps so it now includes installing the “
lsb-release
” package in case it isn’t installed.Cheers,
Emmet
Hi,
I’m trying to install the latest PHP onto my Raspberry Pi 4b 8GB. This is just one of the steps towards my ultimate goal of installing NextCould (which is also failing).
I have a couple of problems, following the above:
Returns:
sudo: apt-add-repository: command not found
I managed to resolve this by:
sudo apt install software-properties-common
which allowed me to run the add-apr-repository command, but I then received further errors:
I then did: sudo apt update, but it returned more errors:
Despite the above, I carried on & attempted the final test steps, which ultimately worked.
I’m concerned that the install isn’t quite right since I’m trying to install nextcloud, but am running into more difficulties there too.
Would appreciate your thoughts.
Thanks!
Hi Max,
What operating system are you using? From the “apt update” result you got it looks like you are running Raspberry Pi OS Bullseye.
This means you should have followed the “
Adding the Repository on Raspberry Pi OS
” subheading and not “Adding the Repository on Ubuntu
“.Cheers,
Emmet